在设计新API时,我们正在尽力遵循REST建立的模式.我遇到的问题是尝试更新单个属性时要遵循的最佳方法.例如:
想象一下,你有一个简单的汽车资源:
{
"make": "Chevrolet",
"model": "Chevelle",
"year": 1966,
"color": "black",
"for_sale": true
}
Run Code Online (Sandbox Code Playgroud)
我们假设该属性for_sale是您预期将由用户定期更新的内容.我有几个选择:
PUTfor_sale设置为的整个资源false.对于一个相当小的资源,这似乎很好,但是,在大多数情况下,我们的资源非常大,因此在发送整个资源以更新单个(通常是已更改的)属性时会浪费很多.
POST并通过仅包含要更新的元素进行部分更新,例如:
{"for_sale":false}这样做更好,因为它需要更少的开销.
但我似乎在某种程度上寻求更简单的东西,但我似乎没有找到正确的方法.提供一个简单PUT的URL(不需要任何请求体)来更新这个属性会很方便.我看到谷歌在他们的API中做了什么来实现这一目标,但感觉有点像RPC-ish,尽管我喜欢简单.
POST /blogs/blogId/posts/postId/comments/commentId/approve
(将评论标记为非垃圾邮件)
POST /blogs/blogId/posts/postId/comments/commentId/spam (将评论标记为垃圾邮件)
有人可以提供一些建议,以便采用遵循REST原则来更新资源中的单个属性(以优选的轻量级方式)的最佳方法吗?谢谢!
Eng*_*ery 12
实际上,我认为PATCH方法是专门为此目的而设计的.您应该使用它来提供对象的部分更新,而不是完整更新.这是一篇博客文章,可以更详细地解释这一点.
| 归档时间: |
|
| 查看次数: |
12779 次 |
| 最近记录: |