例如,我有一个实体层次结构,由于某些问题,我在创建父项请求之前收到创建子项的请求。
在这种情况下使用代码424是否正确?
答案 0 :(得分:7)
对于这方面的一些意见肯定有空间。 RFC4918将HTTP状态代码424定义为(强调我的):
424(失败的依赖关系)状态代码表示无法对资源执行该方法,因为请求的操作取决于另一个操作并且该操作失败。例如,如果PROPPATCH方法中的命令失败,则至少其余命令也将失败,并且424(失败的依赖关系)。
在我看来,这不符合您的情况,因为依赖操作尚未发生,而此状态代码似乎表示已收到相关操作但失败。
Julian Rechke对 409 Conflict 的回答在RFC2616中定义为
由于与资源的当前状态发生冲突,无法完成请求。此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许。响应主体应该包含足够的信息供用户识别冲突的来源。理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题;但是,这可能是不可能的,也不是必需的。
但是,如果接收此响应的客户端能够解决问题(在这种情况下,创建父级),则只应使用此响应。如果不是这种情况,我可能再次推荐来自RFC4918的 422 Unprocessable Entity :
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法是正确的(因此400 (错误请求)状态代码不合适)但无法处理包含的指令。例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能会出现此错误情况。
或者只是一个好的老式的 400 Bad Request ,因为创建一个不存在的父母的孩子并不是真的有意义。请求。
答案 1 :(得分:0)
你应该恕我直言,问题是这个状态代码有多了解。我不得不先看看维基百科。
但是我会说,即使客户端默认不处理此代码,也很容易猜到这是客户端错误。
如果可能,我会添加一个提示缺少哪个电话。
答案 2 :(得分:0)
424在WebDAV中定义;这不是问题,但WebDAV用于描述状态代码409(冲突)的错误情况。这就是我要用的东西。