结合 REST API 和 RPC

Posted

技术标签:

【中文标题】结合 REST API 和 RPC【英文标题】:Combining REST API with RPC 【发布时间】:2014-10-10 13:08:56 【问题描述】:

我正在开发一个类似 CRM 的应用程序,该应用程序通过 REST api 管理公司列表:

GET     /api/companies
POST    /api/companies
PUT     /api/company/1
DELETE  /api/company/1

现在宣布了一项新要求:API 必须提供一种将某些属性从一家公司复制到另一家公司的方法。有几个属性集可以独立复制 - 例如,经理列表和付款信息。

将这种方法添加到现有 API 的最佳方式是什么?

【问题讨论】:

【参考方案1】:

您能否澄清一下您的 PUT 和 POST 操作是做什么的?

如果我必须设计这样的 API,我会这样做

GET /api/companies -> 获取公司列表 POST /api/companies -> 将新公司添加到列表中(即,它将 在 /api/companies 列表中添加一个新的并为 新公司为 /api/companies/1) PUT /api/companies/1 -> 修改公司信息 DELETE /api/companies/1 -> 删除公司

在这种情况下,如果我想将一些信息从公司 1 复制到公司 2

GET /api/companies/1 GET /api/companies/2

将必要的信息从公司 1 状态复制到公司 2 状态,然后

PUT /api/companies/2

这是您需要的,还是您需要在单个 HTTP 操作中复制这些信息?

【讨论】:

糟糕,我混淆了 PUT 和 POST 网址 - 现在已修复。 感谢您的回答。然而,将整个数据对象发送到客户端然后再发送回服务器似乎是多余的。难道没有任何命名操作的约定与 CRUD 操作不对应吗?

以上是关于结合 REST API 和 RPC的主要内容,如果未能解决你的问题,请参考以下文章

REST API:使用 C# 结合登录信息和 API 操作?

独立的 REST API 和独立的 React SPA 与 Django 和 React 的结合

使用 FLASK 将 REST API 与 Web 界面相结合的最佳实践

如何将 PayPal 智能支付按钮与 PHP V2 的 REST API SDK 结合起来?

Django REST Framework 结合来自不同应用程序的路由器

结合 fuse 和 rpc 来列出远程目录