2017-07-12 32 views
0

我有一个HTTP POST方法,有许多验证。一些意思是请求无效,我们返回400 Bad RequestREST HTTP状态代码与副作用错误

但是,对于其中的一些,即使在请求无效的情况下,我们也需要创建一个资源并在主体中返回一个表示。什么是正确的状态码使用?

200 OK似乎是错误的,因为,因为我们已经创建了一个资源为结果的请求是无效的

400 Bad Request似乎是错误的

编辑:请求是两个对象的系统连接,在这种情况下memberticket。但是,即使该请求无效,例如因为该票证已分配给其他成员,我们也希望将该请求的记录与ticket的记录存储在'票据链接'表中,状态为'票证已分配' ,并在响应中返回验证消息。

+0

你应该检查这个https:// stackoverflow。com/questions/942951/rest-api-error-return-good-practices – lauda

+0

[REST API错误返回良好实践]的可能重复(https://stackoverflow.com/questions/942951/rest-api-error-return-良好做法) – lauda

+1

“但是,对于其中的一些,即使在请求无效的情况下,我们也需要创建一个资源并在主体中返回一个表示。”这真的很奇怪 - 你应该通过提供更多的细节来解释这些情况来改善你的问题。 – VoiceOfUnreason

回答

1

请求是链接系统中的两个对象,在这种情况下,一个成员的票。但是,即使请求无效,例如因为该票证已分配给其他成员,我们也希望将票据请求的记录存储在具有“票证已分配”状态的“ticketLink”表中, ,并在响应中返回验证消息。

简短的回答:200

稍长回答根据资源本身的特定语义目标资源的过程中表示封闭在请求

POST方法请求。

由于API已成功完成该操作,因此发出此信号的正确方法是200,其内容主体提供了更多信息。

REST中的情况经常出现 - 正确的使用方法是使用网站。人填写表格,并点击提交按钮申请一张票。什么是一个HTML文件说:“我们很抱歉,这不再可用,这里有一些链接到其他选项。”

状态代码200发信号给浏览器(和中介)证明文件传送成功。

4xx系列都表明文档传输中存在错误;特别是由客户端发送的请求以某种方式被破坏。这里不是这种情况(你在处理域模型中的错误的地方)。

坦率地说,它甚至不是域模型中的错误,对吧?该模型不应该让你声称已被其他人声称的票;所以它做了正确的事情。

REST API使用者在响应中使用消息而不是传输状态代码来理解处理结果,以及现在可用的协议。