Java 返回的正确HTTP错误代码是什么,404对412?

Java 返回的正确HTTP错误代码是什么,404对412?,java,web-services,http,rest,http-response-codes,Java,Web Services,Http,Rest,Http Response Codes,我正在设计RESTAPI。其中一个在家庭中创建房间的POST请求输入了家庭ID和房间名称,如: POST /webCall/development/construction <?xml version="1.0"?><room><home id='110001'/><name>large bedroom</name></room> 请提供您的建议和理由,这将有助于我做出正确的决定。下面是关于412状态代码的说明 在一个或

我正在设计RESTAPI。其中一个在家庭中创建房间的POST请求输入了家庭ID和房间名称,如:

POST  /webCall/development/construction
<?xml version="1.0"?><room><home id='110001'/><name>large bedroom</name></room>
请提供您的建议和理由,这将有助于我做出正确的决定。

下面是关于412状态代码的说明

在一个或多个请求头字段中给定的前提条件 在服务器上测试时评估为false。此响应 代码允许客户端在当前资源上放置前提条件 元信息(标头字段数据),从而阻止请求的 方法不会应用于预期资源以外的资源

所以,如果您发送带有 您试图添加到的资源的

假设你在下面这样的地方发帖

/homes/some-identifier/rooms
您可能应该返回404,因为资源
/homes/some identifier/rooms
不存在

如果你真的在做

POST  /webCall/development/construction
<?xml version="1.0"?><room><home id='110001'/><name>large bedroom</name></room>
POST/webCall/development/construction
大卧室

那么409可能是最合适的。但是,我建议您将API更改为发布到实际的
主页
资源。

412由于Sotirios给出的原因是不正确的

404不正确,因为问题在于有效负载,而不是寻址资源(URI)


您可以使用400(通用)、409或422。

400应该为格式错误的请求抛出。根据HTTP规范使用它是错误的,409也谈到了永久删除的资源,在这里似乎没有说服力…Vinet:请看一下并感谢Julian的回答如果URI在上面,那么404是正确的。但是,在本例中,URI标识一个通用处理程序,房间标识符位于有效负载中。在这种情况下,404将是错误的,因为请求URI标识的资源确实存在。@JulianReschke更新以使我的假设更加清楚。谢谢
POST  /webCall/development/construction
<?xml version="1.0"?><room><home id='110001'/><name>large bedroom</name></room>