修改自 mohuishou
从 protobuf 文件中生成使用 gin 的 http rpc 服务
请确保安装了以下依赖:
注意由于使用 embed 特性,Go 版本必须大于 1.16
go install github.com/victory460/protoc-gen-go-gin@latest
例子见: example
默认情况下 rpc method 命名为 方法+资源,使用驼峰方式命名,生成代码时会进行映射
方法映射方式如下所示:
"GET", "FIND", "QUERY", "LIST", "SEARCH"
--> GET"POST", "CREATE"
--> POST"PUT", "UPDATE"
--> PUT"DELETE"
--> DELETE
service BlogService {
rpc CreateArticle(Article) returns (Article) {}
// 生成 http 路由为 post: /article
}
除此之外还可以使用 google.api.http option 指定路由,可以通过添加 additional_bindings 使一个 rpc 方法对应多个路由
// blog service is a blog demo
service BlogService {
rpc GetArticles(GetArticlesReq) returns (GetArticlesResp) {
//
// 可以通过添加 additional_bindings 使一个 rpc 方法对应多个路由
option (google.api.http) = {
get: "/v1/articles"
additional_bindings {
get: "/v1/author/{author_id}/articles"
}
};
}
}
protoc -I ./example/api \
--go_out ./example/api --go_opt=paths=source_relative \
--go-gin_out ./example/api --go-gin_opt=paths=source_relative \
example/api/product/app/v1/v1.proto
- query参数支持
- support more reflect type in uri params