【发布时间】:2014-11-03 12:29:17
【问题描述】:
假设我想做DELETE /groups/20,并且我的业务规则规定您不能删除一个组,只要它有成员。
- 如果 DELETE 成功,我会返回
200或204 - 如果第 20 组不存在,我会返回
404 - 如果用户未通过身份验证,我会返回
401。 - 如果用户已通过身份验证但没有第 20 组的权限,我将返回
403 - 如果组 20 存在,用户已通过身份验证,请求正常,但您不能删除组 20,因为它包含成员?
在这种情况下你会返回什么? 400?但是语法是完美的。 403?嗯,是的,这是被禁止的,但是403 的一般意思是“你没有权利执行这个动作”,而不是“你有权利,但是某些先决条件未满足,请处理好这些先决条件,然后再回来。”
【问题讨论】:
-
可能是
409 Conflict? -
删除冲突?似乎很奇怪。
409似乎更多地保留用于双重创建某些东西,例如如果name必须是唯一的,并且您创建一个与现有项目同名的项目,或者将名称更新为与现有项目相同。 -
@Mat 否,因为
412是“服务器不满足请求者对请求提出的先决条件之一。” -
@Mat 很有趣。我喜欢它作为一个想法,但它真的是为了这个吗?我认为这是针对显式标头的,例如“如果某些条件显式为真,则删除此资源”
-
@Tichodroma 是的,看起来你是对的。见stackoverflow.com/questions/5369480/…
标签: rest