我理解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
答案 0 :(得分:1)
作为一般经验法则,PUT
请求用于更新现有记录,POST
用于创建新记录。 POST
也可用于更新,但这取决于您希望遵守约定的程度。
所使用的http方法实际上对所请求资源的确切性质没有任何意义,只是GET
用于读取,PUT
,POST
,{ {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}}的好方法。