一位同事和我正在讨论我们的REST API的实现,他提到在他以前的工作中他们从未使用过GET而是使用POST代替它。他的理由是它促进了一致性;客户端(移动设备)不需要担心某个API调用是POST还是GET,它可以认为它是一个POST。
正如我所说,移动设备使用此API,因此GET和POST之间的各种浏览器特定差异不适用(例如缓存GET请求并在浏览器历史记录中具有GET请求等)。
这是否有保证?对我来说似乎仍然是不好的做法。任何人都可以解释使用GET和POST而不是所有POST的好处吗?
答案 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谓词。