Gokvadmin은 키-값 데이터베이스를 관리하기 위한 최소한의 웹 인터페이스입니다. 키 추가, 삭제 및 검색 기능을 제공합니다.
Gokvadmin을 사용하면 모든 엔진 요구 사항에 맞는 맞춤형 엔진을 연결할 수 있습니다.)
Gokvadmin 사용을 시작하려면 Go 1.8 이상을 설치하고 go get
실행하세요.
$ go get github.com/sigurniv/gokvadmin
현재 Gokvadmin은 몇 가지 내장된 키-값 데이터베이스를 지원합니다.
내장형 저장소는 종종 데이터 파일/디렉토리에 대한 잠금을 얻습니다. Gokvadmin을 사용하면 현재 기존 데이터베이스 연결을 재사용할 수 있으므로 실행 중인 애플리케이션과 함께 사용할 수 있습니다.
Gokvadmin은 기본적으로 :8083
에서 net/http
웹 서버를 시작하고 $GOPATH/github.com/sigurniv/gokvadmin/assets
폴더에서 정적 파일을 제공합니다.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // *bolt.DB
//Use default gokvadmin config
config := gokvadmin . DefaultConfig
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Gokvadmin은 내부적으로 gorilla/mux 및 net/http를 사용합니다. gokvadmin 구조체의 Router 및 Server 필드에서 각각 라우터와 서버를 사용할 수 있습니다. 이를 통해 필요에 따라 두 가지를 모두 사용자 정의할 수 있습니다.
package main
import (
"github.com/sigurniv/gokvadmin"
"time"
)
func main () {
// Create database connection
db := ... // *bolt.DB
config := gokvadmin . DefaultConfig
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
//Customize the Server instance
admin . Server . Addr = ":3001"
admin . Server . WriteTimeout = time . Second * 15
go admin . Run () // listen and serve on 0.0.0.0.:3001
}
기본적으로 Gokvadmin은 인증을 사용하지 않으므로 누구나 대시보드에 로그인할 수 있지만 로그인/비밀번호 인증을 추가할 수 있습니다.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // *bolt.DB
config := gokvadmin . DefaultConfig
config . Auth = & gokvadmin. Auth {
Login : "login" ,
Password : "password" ,
}
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
TLS를 사용하려면 TLS
구조체를 구성 객체에 전달해야 합니다.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // *bolt.DB
config := gokvadmin . DefaultConfig
config . TLS = & gokvadmin. TLS {
CertFile : "server.crt" ,
KeyFile : "server.key" ,
}
admin , _ := gokvadmin . NewGoKVAdmin ( "boltdb" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Gokvadmin과 함께 사용할 사용자 지정 엔진을 추가할 수 있습니다. 당신이 해야 할 일은 엔진 인터페이스를 구현하고 등록하는 것 뿐입니다.
package main
import (
"github.com/sigurniv/gokvadmin"
)
func main () {
// Create database connection
db := ... // Your db connection
//Use your custom engine
gokvadmin . RegisterEngine ( "custom_engine" , & YourCustomEgine {})
config := gokvadmin . DefaultConfig
admin , _ := gokvadmin . NewGoKVAdmin ( "custom_engine" , db , config )
go admin . Run () // listen and serve on 0.0.0.0.:8083
}
Gokvadmin은 프런트엔드에 Vue.js를 사용합니다. 사용자 정의 엔진의 레이아웃을 사용자 정의할 수 있습니다. Gokvadmin에는 assets/dist/build.js
및 assets/dist/bootstrap.min.css
파일이 번들로 제공됩니다. vue.js webpack-simple 템플릿을 사용하므로 프런트엔드 부분 코딩을 시작하기 위해 해야 할 일은 다음과 같습니다.
$ npm init
$ npm run dev
assets/src/engines
폴더에 사용자 정의 구성 요소를 생성하고 assets/src/store/modules/engines.js
파일에 등록합니다.
import YourCustomEngineComponent from '../../components/engines/YourCustomEngineComponent.vue' ;
const state = {
engines : {
'default' : General ,
'boltdb' : General ,
'badger' : General ,
"custom_engine" : YourCustomEngineComponent
} ,
...
} ;
사용자 정의 경로를 추가하려면 엔진이 RouterEngine 인터페이스를 구현해야 합니다.
func ( e CustomEngine ) AddRoutes ( r * mux. Router ) {
r . HandleFunc ( "/api/custom-engine/hello" , func ( w http. ResponseWriter , r * http. Request ) {
w . Header (). Set ( "Content-Type" , "application/json" )
w . Write ([] byte ( "hello from custome-engine" ))
return
}). Methods ( http . MethodGet )
}