用于创建和更新的RESTAPI

用于创建和更新的RESTAPI,rest,http,Rest,Http,在RESTAPI中处理创建和更新请求的首选方法是什么 在我的前端,我使用相同的表单进行创建和更新,唯一的区别是在更新的情况下,会填充一个id为的隐藏表单字段 是否可以使用post方法将两个请求发送到/api/post,并根据id决定是发布还是更新?或者应该以其他方式处理此问题?如果要遵循REST原则,最好像下面这样分离端点 POST api/collections (e.g. api/users) PUT api/collections/:id (e.g. api/user

在RESTAPI中处理创建和更新请求的首选方法是什么

在我的前端,我使用相同的表单进行创建和更新,唯一的区别是在更新的情况下,会填充一个id为的隐藏表单字段


是否可以使用post方法将两个请求发送到/api/post,并根据id决定是发布还是更新?或者应该以其他方式处理此问题?

如果要遵循REST原则,最好像下面这样分离端点

POST  api/collections       (e.g. api/users)
PUT   api/collections/:id   (e.g. api/users/23)
分离端点有两个原因

  • PUT必须是幂等的,而POST不能

  • 如果资源的URL(如api/users/23)已经存在, 使用PUT。如果没有,发送POST并让服务器生成 网址。(在许多情况下,它使用DB的自动递增键)

当然,是否遵循REST原则取决于您自己

参考文献

通常
POST
用于添加新实体,然后
PUT
用于更改,以及
DELETE
用于删除<代码>获取查询的。。等等。还有更新的
补丁
,但是IMHO
PUT
对于更新更清晰。那么我应该使用单独的URL和方法来创建和更新吗?取决于后端支持什么。顺便说一句,
api/post
不是很具有描述性,它应该有一个有意义的名称,因此您可以决定单独发送post/put/delete。如果您以某种方式发送请求,最好的解决方案是使用put,并带有save特性,使用id来指示这是一个创建或更新。