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

时间:2015-01-28 07:40:06

标签: web-services rest post mobile get

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

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

这是否有保证?对我来说似乎仍然是不好的做法。任何人都可以解释使用GET和POST而不是所有POST的好处吗?

1 个答案:

答案 0 :(得分:0)

这不是RESTful。 REST的原则之一是Uniform Interface。这个原则的一个限制是资源识别

  

在请求中标识单个资源,例如在基于Web的REST系统中使用URI。

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

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

此URI标识酒店1234中的房间456.要与此资源交互,使用HTTP谓词。要获取资源的状态,请使用GET。要更改它,请使用PUT。如果操纵资源的子资源但是如何最好地使用该模式仍然可以使用POST进行讨论。

建议仅对{em>每个交互使用POST表示完全缺乏有关REST的知识。大多数情况下,人们不会想到" REST"他们不会想到"资源"什么时候提出这个。他们认为的是远程过程调用(RPC),可以通过HTTP实现,但没有对REST做。

摘要:不要将POST用于所有内容。为您的资源建模并使用正确的HTTP谓词。