把 REST API 转换成 gRPC,要把请求里 body 的东西一个个提取到*.proto 中吗?

2019-09-25 17:52:16 +08:00
 x97bgt

老的 API 都是 REST 类型的,有两百多个。现在要保留这些 REST API,同时提供对应的 gRPC 调用。

我的想法是在 ProtBuf 里面就给 headers,params,path 这几个字段,都是 string 类型,不用关心具体内容。然后构造成 REST 请求,丢到后面去 unmarsahll 一下,执行相应逻辑。

但这个有一个问题。protobuf 可以告诉 Client 怎么调用 gRPC Method。如果使用这种大颗粒的方法,那 Client 就不知道要往里面填什么内容(比如 body 是 string 类型,但调用这个 API 必须往里面填 username 和 password。这样就完全看不出来)。

如果一个个 API 检查,可以知道具体需要的哪些字段,写出对应的*.proto,Client 一看就知道怎么使用。但两百多个 API 啊,这怎么检查的过来。

这些 REST API 太底层了,几乎不遵循什么规范。

有啥好解决的方案不?

1472 次点击
所在节点    程序员
2 条回复
index90
2019-09-25 19:25:44 +08:00
根据原有的 API,编写 Proto 文件
根据 Proto 文件生成 gRPC 和 Rest 框架,注意,Client 和 Server 的 interface 应该只有一套,这样逻辑代码可以不用修改,就能使用两个框架。
Micro 公司有个 go-micro 项目,可以参考一下。
fishCatcher
2019-09-25 19:51:19 +08:00
可以在 proto 中加入一个 apiid 字段供判断,然后所有字段都写到同一个 proto 中
不知道有没有理解对 lz 的意思

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX