RESTful url:单个记录的PUT或POST

时间:2014-05-16 05:23:43

标签: api rest laravel restful-url

我理解PUT(更新)和POST(创建)之间的区别。我正在使用Laravel。 我想知道的是你将在下面的例子中使用什么:

domain.com/users/1/reports

我正在为用户1收到所有报告。每个用户只会有1个报告。 因此,如果用户1想要查看该报告,那么它将是:

GET domain.com/users/1/reports

现在我应该使用PUT或POST来更新该报告。 PUT需要一个我认为不必要的ID,因为它们只有1个报告,例如:

PUT domain.com/users/1/report/12

所以我的想法是只使用POST,因此域名更清晰

POST domain.com/users/1/report 

2 个答案:

答案 0 :(得分:1)

作为一般经验法则,PUT请求用于更新现有记录,POST用于创建新记录。 POST也可用于更新,但这取决于您希望遵守约定的程度。

所使用的http方法实际上对所请求资源的确切性质没有任何意义,只是GET用于读取,PUTPOST,{ {1}}和PATCH用于写入。

如果只有一个报告,则无需在uri中提供id,因此DELETE就足够了。然后你可以像这样访问报告:

/users/{id}/report

这意味着您必须覆盖laravel使用的默认路由方法,但作为最佳实践,您应养成定义所有路由的习惯,而不是依赖于laravels默认值。

答案 1 :(得分:0)

如果有can be only one report,则应将其GET domain.com/users/1/report检索为PUT domain.com/users/1/report,并更新相同的路由PUT

PUT method does not require an ID of the entity如果只有一个。我坚持认为它保持POST幂等。

POST方法不是幂等的,也就是说,PUT在具有相同参数的同一路径上多次POST每次都会产生不同的结果,就像为该用户创建多个报告一样。

幂等是了解{{1}}和{{1}}的好方法。