• 请不要在回答技术问题时复制粘贴 AI 生成的内容
x97bgt
V2EX  ›  程序员

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

  •  
  •   x97bgt · Sep 25, 2019 · 1831 views
    This topic created in 2422 days ago, the information mentioned may be changed or developed.

    老的 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 太底层了,几乎不遵循什么规范。

    有啥好解决的方案不?

    2 replies    2019-09-25 19:51:19 +08:00
    index90
        1
    index90  
       Sep 25, 2019
    根据原有的 API,编写 Proto 文件
    根据 Proto 文件生成 gRPC 和 Rest 框架,注意,Client 和 Server 的 interface 应该只有一套,这样逻辑代码可以不用修改,就能使用两个框架。
    Micro 公司有个 go-micro 项目,可以参考一下。
    fishCatcher
        2
    fishCatcher  
       Sep 25, 2019 via iPhone
    可以在 proto 中加入一个 apiid 字段供判断,然后所有字段都写到同一个 proto 中
    不知道有没有理解对 lz 的意思
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1301 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 23:51 · PVG 07:51 · LAX 16:51 · JFK 19:51
    ♥ Do have faith in what you're doing.