为了账号安全,请及时绑定邮箱和手机立即绑定

构建具有重载端点的原型 3 gRPC API

构建具有重载端点的原型 3 gRPC API

Go
繁星点点滴滴 2022-09-26 14:52:40
我对API构建相当陌生,所以这可能是一个比我最初提出的更广泛的问题。我正在戈朗中创建一个API(使用原型buf 3和gRPC),它有两个类似的端点:获取 /项目/流派获取 /项目/{id}问题是,当我运行 时,模式匹配会导致端点被调用作为id。有没有一些简单的方法可以解决这个问题,或者我必须在服务器代码中构建一些东西来根据类型调用正确的函数?curl localhost:8080/project/genres/project/{id}genres我还尝试翻转这些定义的顺序,以防万一模式匹配有一些我不知道的操作顺序,但这并没有区别。以下是我的原型文件中的定义:message EmptyRequest { }message ProjectRequest {  string id = 1;}message GenreResponse {  int32 id = 1;  string name = 2;}message ProjectResponse {  int32 id = 1;  string name = 2;}service ProjectService {  rpc GetProject(ProjectRequest) returns (ProjectResponse) {    option (google.api.http) = {      get: "/v1/project/{id}"    };  }  rpc GetGenres(EmptyRequest) returns (GenreResponse) {    option (google.api.http) = {      get: "/v1/project/genres"    };  }}
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我能够在URL路径模板中指定检查以解决此问题:


 rpc GetGenres(EmptyRequest) returns (GenreResponse) {

    option (google.api.http) = {

    get: "/v1/project/{id=genres}"

  };

}

这似乎已经解决了这个问题。我不知道是否有其他解决方案,或者这是否是正确的方法,但是如果有更好的答案,我很乐意接受其他答案。


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信