【发布时间】:2014-08-10 18:15:19
【问题描述】:
我正在实现一个用于设置和检索资源的 REST api。
我最初的实现非常简单:
1) PUT - path 指定要存储的 {id},请求正文是要存储的 JSON 对象,成功时返回 200 响应
2) GET - 路径指定要检索的 {id},请求正文为空,返回 200 响应和正文中存储的 JSON 对象
3) DELETE - 路径指定要删除的 {id},请求正文为空,返回 200 和空正文(是的,可能应该是 204)
但是,一个比我更有影响力的上游方要求我们对 JSON 对象进行破坏性检索。他们坚持认为,他们不想费心进行单独的 GET 和 DELETE 调用(即,这与试图确保原子调用以消除竞争条件的人无关)。
对我来说,这似乎违反了 RESTful 服务的精神,当我尝试记录此更改时,API 文档有一种明确的“代码气味”,因为在尝试清楚地记录 GET/DELETE 方法时感觉很尴尬.
显然,我可以实现任何可行的方法,但是是否存在关于破坏性读取的完善约定?在某些情况下确实需要原子调用吗?
【问题讨论】:
-
不确定我是否理解您的问题。您的意思是将 JSON 作为 DELETE 响应发送还是在 GET 请求中删除对象?
-
问题与stackoverflow.com/questions/25173786/…的问题有何不同?