2 Star 0 Fork 0

djienet / kratos

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
blademaster-pb.md 2.87 KB
一键复制 编辑 原始数据 按行查看 历史
chenli 提交于 2020-11-02 15:38 . update

介绍

基于proto文件可以快速生成bm框架对应的代码,提前需要准备以下工作:

kratos工具说明

kratos tool protoc工具可以生成warden bm swagger对应的代码和文档,想要单独生成bm代码只需加上--bm如:

# generate BM HTTP
kratos tool protoc --bm api.proto

proto文件说明

请注意想要生成bm代码,需要特别在protoservice内指定google.api.http配置,如下:

service Demo {
	rpc SayHello (HelloReq) returns (.google.protobuf.Empty);
	rpc SayHelloURL(HelloReq) returns (HelloResp) {
        option (google.api.http) = {     // 该配置指定SayHelloURL方法对应的url
            get:"/kratos-demo/say_hello" // 指定url和请求方式为GET
        };
    };
}

使用

建议在项目api目录下编写proto文件及生成对应的代码,可参考kratos-demo内的api目录

执行命令后生成的api.bm.go代码,注意其中的type DemoBMServer interfaceRegisterDemoBMServer,其中:

  • DemoBMServer接口,包含proto文件内配置了google.api.http选项的所有方法
  • RegisterDemoBMServer方法提供注册DemoBMServer接口的实现对象,和bmEngine用于注册路由
  • DemoBMServer接口的实现,一般为internal/service内的业务逻辑代码,需要实现DemoBMServer接口

使用RegisterDemoBMServer示例代码请参考kratos-demo内的http内的如下代码:

engine = bm.DefaultServer(hc.Server)
pb.RegisterDemoBMServer(engine, svc)
initRouter(engine)

internal/service内的Service结构实现了DemoBMServer接口可参考kratos-demo内的service内的如下代码:

// SayHelloURL bm demo func.
func (s *Service) SayHelloURL(ctx context.Context, req *pb.HelloReq) (reply *pb.HelloResp, err error) {
	reply = &pb.HelloResp{
		Content: "hello " + req.Name,
	}
	fmt.Printf("hello url %s", req.Name)
	return
}

文档

基于同一份proto文件还可以生成对应的swagger文档,运行命令如下:

# generate swagger
kratos tool protoc --swagger api.proto

该命令将生成对应的swagger.json文件,可用于swagger工具通过WEBUI的方式打开使用,可运行命令如下:

kratos tool swagger serve api/api.swagger.json

扩展阅读

bm快速开始
bm模块说明
bm中间件


文档目录树

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/djienet/kratos.git
git@gitee.com:djienet/kratos.git
djienet
kratos
kratos
v1.1.7

搜索帮助

344bd9b3 5694891 D2dac590 5694891