老的 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 太底层了,几乎不遵循什么规范。
有啥好解决的方案不?
1
index90 2019-09-25 19:25:44 +08:00
根据原有的 API,编写 Proto 文件
根据 Proto 文件生成 gRPC 和 Rest 框架,注意,Client 和 Server 的 interface 应该只有一套,这样逻辑代码可以不用修改,就能使用两个框架。 Micro 公司有个 go-micro 项目,可以参考一下。 |
2
fishCatcher 2019-09-25 19:51:19 +08:00 via iPhone
可以在 proto 中加入一个 apiid 字段供判断,然后所有字段都写到同一个 proto 中
不知道有没有理解对 lz 的意思 |