我正在尝试在 REST 和 JSON-RPC 之间进行选择来为 Web 应用程序开发 API。他们如何比较?
2015 年更新:我发现 REST 更容易开发和用于在 Web/HTTP 上提供服务的 API,因为 API 可以利用客户端和服务器都可以理解的现有且成熟的 HTTP 协议。例如,API 可以使用响应代码、标头、查询、帖子正文、缓存和许多其他功能,而无需任何额外的工作或设置。
RPC 的根本问题是耦合。 RPC 客户端通过多种方式与服务实现紧密耦合,并且很难在不破坏客户端的情况下更改服务实现:
- 客户需要知道程序名称;
- 程序参数的顺序、类型和数量很重要。在服务器端更改过程签名(参数数量、参数顺序、参数类型等)而不破坏客户端实现并不那么容易;
- RPC 风格除了过程端点 + 过程参数之外不公开任何内容。客户不可能确定下一步可以做什么。
另一方面,在 REST 风格中,通过在表示(HTTP 标头 + 表示)中包含控制信息来引导客户端非常容易。例如:
- 可以(并且实际上是强制的)嵌入用链接关系类型注释的链接,这些链接关系类型传达这些 URI 的含义;
- 客户端实现不需要依赖于特定的过程名称和参数。相反,客户端依赖于消息格式。这使得使用已经实现的特定媒体格式库成为可能(例如 Atom、HTML、Collection+JSON、HAL 等...)
- 可以轻松地更改 URI,而不会破坏客户端,因为它们仅依赖于注册的(或特定于域的)链接关系;
- 可以在表示中嵌入类似表单的结构,如果最终用户是人类,则客户可以将这些描述公开为 UI 功能;
- 支持缓存是额外的优势;
- 标准化状态代码;
REST 方面还有更多差异和优势。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)