假设我有资源代表图像
PUT/images/[id] with path - >如果已经存在更新我的资源,将创建一个新的图像资源
POST/images/[id] - >更改或更新资源例如图像名称
DELETE/images/[id] - >这将删除我的资源
GET/images/[id] - >获取图像详细信息
现在是实际的问题.如果我需要为图像添加其他操作,该怎么办?让我们说图像资源将响应红眼减少动作或任何其他类似的裁剪,调整大小
那么如何考虑这些行为以及如何在宁静的界面中调用它?
/图像/ [ID]/remove_redeye
/图像/ [ID] /作物
/图像/ [ID] /调整大小
上述调用在restful接口中是否有效?我对应该考虑采取什么行动感到困惑(PUT POST)?
"删除红眼","裁剪"和"调整大小"所有声音都像"更改或更新资源"一样.它们属于PUT动作.(我想你在你的问题中混淆了PUT和POST,参考w3c上列出的动词.)
你如何表达行动的本质取决于被张贴的内容.例如,如果我们在谈论位于数据库记录顶部的表单,则POST将仅仅是该记录的数据.没有必要指定哪些字段正在被更改,因为整个对象正在以新状态进行POST.
在这种情况下,整个对象是否处于新状态?或者该对象仅在服务器端存在,并且接口只是发送某种操作的请求?根据所提供的信息,对我来说听起来就像后者.
在这种情况下,您可以在POST中包含有关该操作的更多信息.请记住,POST可以在其数据中包含键/值对和/或更大更复杂的POST正文.例如,该主体可以包含XML,为服务器指定更多信息以用于处理请求.也许是这样的:
<image id="123">
<resize>
<width>200</width>
<height>200</height>
</resize>
</image>
Run Code Online (Sandbox Code Playgroud)
这甚至可以允许同一请求中的多个动作,允许用户在将它们全部提交到单个工作单元服务器端之前尝试客户端的各种操作.当然,你如何处理它或者在这种情况下它是否适用.
| 归档时间: |
|
| 查看次数: |
2084 次 |
| 最近记录: |