首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >已失败的post请求的api状态代码

已失败的post请求的api状态代码
EN

Stack Overflow用户
提问于 2019-04-26 12:39:25
回答 4查看 5.5K关注 0票数 3

我有一个post api调用,目前在我的预订系统中创建了一个约会。

如果api调用发送约会请求,而api可以成功地创建委托,则api返回201创建的状态代码。

目前,如果没有创建约会请求(由于时间已不再可用或房间正在使用等各种原因),api将返回400个错误的请求状态代码。

"400坏请求响应状态代码表示服务器无法或不处理请求,原因是被认为是客户端错误“

发送的数据不是无效的语法,可能会重新部署并成功。

是否有更相关的状态代码用于此失败创建资源。在这种情况下,422个不可处理实体会是有效的响应吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-26 13:28:16

409可以适合这个用例(以及我个人的喜好):

“由于与目标资源的当前状态冲突,无法完成请求。此代码用于用户可能解决冲突并重新提交请求的情况。”

通常在PUT中使用,但在这种情况下可以工作。例如,他们可以更改请求中的建议时间。或者,如果房间有空,他们可以稍后再试一次。

422也可以用来指示字段级别的错误。

无论哪种方式,一个重要的事情是伴随着一个很好的错误信息来表示问题。来自rfc7231:

服务器应该发送一个表示,其中包含错误情况的解释,以及它是临时的还是永久性的。这些状态代码适用于任何请求方法。

票数 4
EN

Stack Overflow用户

发布于 2019-04-26 13:32:08

..。如果没有创建约会请求(由于各种原因,如时间已不再可用或房间正在使用).

状态代码用于指示服务器试图理解和满足客户端请求的结果。考虑到这是一个客户端错误,最合适的状态代码将在4xx范围内。

对于问题中描述的情况,您可以使用409

6.5.8.409冲突 409 (冲突)状态代码指示由于与目标资源的当前状态发生冲突而无法完成请求。此代码用于用户可能解决冲突并重新提交请求的情况。服务器应该生成包含足够信息的有效负载,以便用户识别冲突的来源。..。

400422

通常,使用400表示有效负载中的语法错误或URL中的无效参数。并使用422表示有效负载中的语义问题。请参见如何定义每个状态代码:

6.5.1.400个错误请求 400 (坏请求)状态代码表示,服务器由于被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由)而无法处理请求。11.2。422个不可处理实体 422 (非处理实体)状态代码意味着服务器理解请求实体的内容类型(因此415 (不支持的媒体类型)状态代码是不合适的),请求实体的语法是正确的(因此400 (坏请求)状态代码是不合适的),但是无法处理包含的指令。例如,如果XML请求体包含格式良好(即语法正确)但语义错误的XML指令,则可能出现此错误情况。

还请考虑由著名的GitHub API v3 API返回的状态代码:

在接收请求主体的API调用上有三种可能类型的客户端错误:

  1. 发送无效的JSON将导致400 Bad Request响应。..。
  2. 发送错误类型的JSON值将导致400 Bad Request response。..。
  3. 发送无效字段将导致422 Unprocessable Entity响应。..。

当涉及到选择最合适的状态代码时,迈克尔·克洛巴特组合了一个非常有洞察力的一组图表。有关4xx状态代码,请参见下面的图表:

票数 2
EN

Stack Overflow用户

发布于 2020-09-07 03:28:48

我的建议是使用412的前提条件,失败的状态代码表明服务器由于失败/拒绝附加条件或业务逻辑而无法处理POST请求。

参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55867861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档