And*_*kin 5 rest http http-status-codes
例如,我有一个实体层次结构,由于某些问题,我在创建父项的请求之前收到创建子项的请求.
在这种情况下使用代码424是否正确?
对此有一些意见空间.RFC4918将HTTP状态代码424定义为(强调我的):
424(失败的依赖关系)状态代码表示无法对资源执行该方法,因为请求的操作依赖于另一个操作并且该操作失败.例如,如果PROPPATCH方法中的命令失败,那么至少其余命令也将失败,其中424(失败的依赖关系).
在我看来,这不符合您的情况,因为依赖操作尚未发生,而此状态代码似乎表示已收到相关操作但失败.
Julian Rechke对409 Conflict的回答在RFC2616中定义为
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题; 但是,这可能是不可能的,也不是必需的.
但是,如果接收此响应的客户端能够解决问题(在这种情况下,创建父级),则只应使用此响应.如果不是这种情况,我可能会再次从RFC4918 推荐一个422 Unprocessable Entity:
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.
或者只是一个很好的老式的400 Bad Request,因为在请求的时间点创建一个不存在的父节点的子节点是没有意义的.