Last updated
Last updated
RPC:面向过程,也就是要做一件什么事情,只发送 GET 和 POST 请求;
GET 用来查询信息,其他情况下一律用 POST;请求参数是动词。
RESTful:面向资源,这里的资源可以是一段文字、一个文件、一张图片,总之是一个具体的存在,可以使用 GET、POST、DELETE、PUT 请求,对应了增删查改的操作;请求参数是名词。
比如按照 id 查找用户:
RPC 通常包含传输协议和序列化协议,单说传输协议,RPC 可以建立在 TCP 协议之上(比如 Dubbo),也可以建立在 HTTP 协议之上(比如 gRPC);如果是基于数据形式分类,RPC 又可以分成基于二进制、XML 和 JSON 三种;
对于 RPC 来讲,它通常代表 remote procedure call
, 这里我们把它理解成为 WYGOPIAO, 也就是 what you get or post is an operation. 通过这个 RPC 类型,你通过 http 协议暴露出自己的动作以及数据封装。据我所知,通常也没有什么规则可循,但是大致是这样的:
endpoint 通常都是包括动作名称的
通常只是使用 get 或者 post 来通信
endpoint 通常会包含要操作的资源
通常会使用 CRUD 来描述对于资源的操作
动词 + 宾语
宾语必须是名词
复数 URL
避免多级 URL, 除了第一级,其他级别都用查询字符串表达。
需要支持 RESTful 规范,则需要支持动态路由
,即 /articles/2
形式,后面的 2 是个动态值
则可以通过如下方式实现
请求路径只有 1 级的 resource,且 URL 结尾不包含斜杠“/”
获取 resources 和 object
实现 api map
handler 例子
rest 风格 api
RPC VS RESTful 风格的 API