假设我有一个API暴露两个相关资源,公司有很多员工.
假设我创建了一个新公司:POST http:// domain/api/company /返回类似http:// domain/api/company/123的内容.
如果从系统中删除company/123(例如通过DELETE),则GET http:// domain/api/company/123可以返回HTTP响应代码410(Gone).
我的问题是这个.如果我现在尝试通过POST http:// domain/api/employees /(在请求主体中将companyId设置为123)在Company/123下创建一个Employee,由于服务器应该由服务器发回哪些HTTP响应代码非法请求?
例如,请求被正确格式化,但由于公司123已经消失,因此存在逻辑错误.
内部服务器错误500?
Ray*_*oal 24
不是500,因为服务器没有问题.
我建议409冲突.
来自RFC:
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题; 但是,这可能是不可能的,也不是必需的.冲突最有可能发生在响应PUT请求时.例如,如果正在使用版本控制并且包含PUT的实体更改为与早期(第三方)请求所产生的资源冲突的资源,则服务器可能会使用409响应来指示它无法完成请求.在这种情况下,响应实体可能包含由响应Content-Type定义的格式的两个版本之间的差异列表.
它不完全符合你的情况,但它是非常接近恕我直言.
例如,服务器可以告诉您不存在要发布到的父资源,您可以将该员工"重新提交"给其他公司.:)