看起来我有两种方法可以制作我的REST API。我可以使用POST创建用户而不指定URI,它将创建用户并返回URI或者我可以创建具有PUT的用户并指定URI 他们自己。
何时应该使用另一个?这里的关键区别在于,在一种方法中,我的系统决定了资源的唯一ID和URI,在另一种情况下,他们正在指定创建时应该是什么。
答案 0 :(得分:2)
这主要取决于您是否愿意放弃对客户端的资源命名控制。
最大的问题只是处理冲突(如果我PUT /photo.png和你PUT /photo.png,那可以吗?)。
回答这些问题,然后你就开始了。
答案 1 :(得分:0)
当您的用户指定资源ID时,他们可以PUT到URI;他们执行PUT的ID是资源ID的规范。
当您指定资源ID时,他们可以POST到父/组的URI;您的系统将为资源分配一个URI,并将其返回给客户端,以便他们可以引用其创建的资源。
答案 2 :(得分:0)
这个问题的答案取决于两个更具体的问题:
如果这两个问题的答案都是“是”,那么PUT可能是合适的。如果您对其中任何一个回答“否”,那么您应该坚持使用POST。
答案 3 :(得分:0)
我可以通过POST创建用户 没有指定URI,它会 创建用户并返回URI OR 我可以用a创建用户 PUT 并自己指定URI 。
何时应该使用 其他
使用第一个。
在RESTful HTTP中,客户端从不构造URI。该服务应该连接良好,这意味着客户端应该只遵循服务器给出的URI并向这些URI发出请求。
它可以在客户端和服务器之间创建更好的分离,并且可以在不破坏现有客户端的情况下更轻松地对服务进行更改。
(是的,现有API的很多错误)
Fielding有一篇非常好的帖子与此主题相关:
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven