Gokvadmin 是一个用于管理键值数据库的简约 Web 界面。它提供添加、删除和搜索密钥的功能。
Gokvadmin 允许插入自定义引擎以满足您的所有引擎需求;)
要开始使用 Gokvadmin,请安装 Go 1.8 或更高版本并运行go get
:
$ go get github.com/sigurniv/gokvadmin
目前 Gokvadmin 支持一些嵌入式键值数据库:
嵌入式存储通常会获取数据文件/目录的锁定。 Gokvadmin 允许重用当前现有的数据库连接,这使得可以将其与正在运行的应用程序一起使用。
Gokvadmin 默认在:8083
启动net/http
Web 服务器,并提供$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 一起使用。您所需要做的就是实现 Engine 接口并注册它。
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 )
}