我有一个post api调用,目前在我的预订系统中创建了一个约会。
如果api调用发送约会请求,而api可以成功地创建委托,则api返回201创建的状态代码。
目前,如果没有创建约会请求(由于时间已不再可用或房间正在使用等各种原因),api将返回400个错误的请求状态代码。
"400坏请求响应状态代码表示服务器无法或不处理请求,原因是被认为是客户端错误“
发送的数据不是无效的语法,可能会重新部署并成功。
是否有更相关的状态代码用于此失败创建资源。在这种情况下,422个不可处理实体会是有效的响应吗?
发布于 2019-04-26 13:28:16
409可以适合这个用例(以及我个人的喜好):
“由于与目标资源的当前状态冲突,无法完成请求。此代码用于用户可能解决冲突并重新提交请求的情况。”
通常在PUT中使用,但在这种情况下可以工作。例如,他们可以更改请求中的建议时间。或者,如果房间有空,他们可以稍后再试一次。
422也可以用来指示字段级别的错误。
无论哪种方式,一个重要的事情是伴随着一个很好的错误信息来表示问题。来自rfc7231:
服务器应该发送一个表示,其中包含错误情况的解释,以及它是临时的还是永久性的。这些状态代码适用于任何请求方法。
发布于 2019-04-26 13:32:08
..。如果没有创建约会请求(由于各种原因,如时间已不再可用或房间正在使用).
状态代码用于指示服务器试图理解和满足客户端请求的结果。考虑到这是一个客户端错误,最合适的状态代码将在4xx范围内。
对于问题中描述的情况,您可以使用409
6.5.8.409冲突
409(冲突)状态代码指示由于与目标资源的当前状态发生冲突而无法完成请求。此代码用于用户可能解决冲突并重新提交请求的情况。服务器应该生成包含足够信息的有效负载,以便用户识别冲突的来源。..。
400对422
通常,使用400表示有效负载中的语法错误或URL中的无效参数。并使用422表示有效负载中的语义问题。请参见如何定义每个状态代码:
6.5.1.400个错误请求
400(坏请求)状态代码表示,服务器由于被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由)而无法处理请求。11.2。422个不可处理实体422(非处理实体)状态代码意味着服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),请求实体的语法是正确的(因此400(坏请求)状态代码是不合适的),但是无法处理包含的指令。例如,如果XML请求体包含格式良好(即语法正确)但语义错误的XML指令,则可能出现此错误情况。
还请考虑由著名的GitHub API v3 API返回的状态代码:
在接收请求主体的API调用上有三种可能类型的客户端错误:
400 Bad Request响应。..。400 Bad Request response。..。422 Unprocessable Entity响应。..。当涉及到选择最合适的状态代码时,迈克尔·克洛巴特组合了一个非常有洞察力的一组图表。有关4xx状态代码,请参见下面的图表:

发布于 2020-09-07 03:28:48
我的建议是使用412的前提条件,失败的状态代码表明服务器由于失败/拒绝附加条件或业务逻辑而无法处理POST请求。
参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412
https://stackoverflow.com/questions/55867861
复制相似问题