You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.1 KiB
57 lines
1.1 KiB
package http
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
pb "{{.ModPrefix}}{{.Name}}/api"
|
|
"{{.ModPrefix}}{{.Name}}/internal/model"
|
|
"github.com/bilibili/kratos/pkg/conf/paladin"
|
|
"github.com/bilibili/kratos/pkg/log"
|
|
bm "github.com/bilibili/kratos/pkg/net/http/blademaster"
|
|
)
|
|
|
|
var svc pb.DemoServer
|
|
|
|
// New new a bm server.
|
|
func New(s pb.DemoServer) (engine *bm.Engine, err error) {
|
|
var (
|
|
hc struct {
|
|
Server *bm.ServerConfig
|
|
}
|
|
)
|
|
if err = paladin.Get("http.toml").UnmarshalTOML(&hc); err != nil {
|
|
if err != paladin.ErrNotExist {
|
|
return
|
|
}
|
|
err = nil
|
|
}
|
|
svc = s
|
|
engine = bm.DefaultServer(hc.Server)
|
|
pb.RegisterDemoBMServer(engine, s)
|
|
initRouter(engine)
|
|
err = engine.Start()
|
|
return
|
|
}
|
|
|
|
func initRouter(e *bm.Engine) {
|
|
e.Ping(ping)
|
|
g := e.Group("/{{.Name}}")
|
|
{
|
|
g.GET("/start", howToStart)
|
|
}
|
|
}
|
|
|
|
func ping(ctx *bm.Context) {
|
|
if _, err := svc.Ping(ctx, nil); err != nil {
|
|
log.Error("ping error(%v)", err)
|
|
ctx.AbortWithStatus(http.StatusServiceUnavailable)
|
|
}
|
|
}
|
|
|
|
// example for http request handler.
|
|
func howToStart(c *bm.Context) {
|
|
k := &model.Kratos{
|
|
Hello: "Golang 大法好 !!!",
|
|
}
|
|
c.JSON(k, nil)
|
|
} |