移动 REST API - 仅使用 POST 代替 GET?

Mobile REST API - only use POST in place of GET?

我和一位同事正在讨论我们的 REST API 的实现,他提到在他之前的工作中他们从未使用过 GET,而是使用 POST 代替它。他的理由是它促进了一致性;客户端(移动设备)不需要担心某个 API 调用是 POST 还是 GET,它可以假设它是 POST.

正如我所说,此 API 由移动设备使用,因此 GET 和 POST 之间的各种浏览器特定差异不适用(例如缓存 GET 请求和在浏览器中具有 GET 请求历史等)。

这个有手令吗?对我来说仍然是不好的做法。谁能解释同时使用 GET 和 POST 而不是全部 POST 的好处?

这不是 RESTful。 REST 的原则之一是 Uniform Interface。这一原则的一个约束是资源识别:

Individual resources are identified in requests, for example using URIs in web-based REST systems.

在 HTTP 上下文中,资源由 URI 标识:

http://example.com/service/hotel/123/room/456

此 URI 标识酒店 1234 中的 456 房间。要与此资源交互,使用了 HTTP 动词。要获取资源的状态,使用 GET。要更改它,请使用 PUTPOST 在资源的子资源被操作时使用,但如何最好地使用此模式仍有待讨论。

提议只对每个交互使用POST表明完全缺乏关于REST的知识。大多数情况下,人们在提出这个建议时不会想到 "REST",也不会想到 "resources"。他们所做的认为是远程过程调用 (RPC),它可以通过 HTTP 实现,但什么都没有用 REST 做。

总结: 不要对所有事情都使用 POST。为您的资源建模并使用正确的 HTTP 动词。