当前位置: 首页 > 知识库问答 >
问题:

REST API调用返回400,即使代码没有错误

董康平
2023-03-14

显示APII错误的图像制作了一个静止的API,它正在操作文件,然后将文件上传到第三方,然后它将有两个数据库操作。第一个是选择,第二个是插入。

在少数情况下,我得到200,但在某些情况下,我得到400。现在,当我得到400时,控制只在选择方法之前出现,该方法没有错误。

所以,看起来请求正在获得超时或其他什么。有人能建议正确的方法吗?我应该在哪里更改超时?

成功日志-[2019-04-11 10:09:26][T][http-nio-10.0.219-7000-exec-11][Controller]文件上传到文件夹[2019-04-11 10:09:26][T][http-nio-10.0.219-7000-exec-11][Controller]检查从新状态转换是否有效-已启动[2019-04-11 10:09:26][T][http-nio-10.0.0.219-7000-exec-11][Controller]调用函数将响应保存在数据库中的DIGIO_响应中[2019-04-11 10:10:11][T][http-nio-10.0.0.219-7000-exec-14][Controller][LFT][userId=12]POST 200/storage/upload

故障日志-2019-04-11 10:10:11][T][http-nio-10.0.219-7000-exec-14][Controller]文件上传到文件夹[2019-04-11 10:10:11][T][http-nio-10.0.219-7000-exec-14][Controller]检查从新状态转换是否有效-已启动[2019-04-11 10:10:11][T][http-nio-10.0.0.219-7000-exec-14][Controller][LFT][userId=12]POST 400/存储/上载

共有3个答案

袁宜
2023-03-14

Spring中的故障排除400响应代码是我存在的祸根。让我惊讶的是异常是多么容易被吞并或在DEBUG中记录。

在这里看到我的答案。为特定的Spring包启用DEBUG日志记录帮助我解决了许多情况下的这些类型的静默故障。

蔚学真
2023-03-14

这是一个错误的请求:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400

从上面的页面:

它表明由于被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息成帧或欺骗性的请求路由),服务器无法或不会处理请求。

客户端不应未经修改重复此请求。

这不是超时。您需要发布更多信息,并查看您的Web服务器日志以了解为什么请求是坏的,可能是很多事情。

贡英华
2023-03-14
No issue with timeout 

400错误请求由于明显的客户端错误(例如,格式错误的请求语法、大小过大、无效的请求消息成帧或欺骗性的请求路由),服务器无法或不会处理请求。

504网关超时服务器充当网关或代理,没有收到来自上游服务器的及时响应。

400表示请求格式错误。换句话说,客户端发送到服务器的数据流没有遵循规则。

对于具有JSON负载的REST API,根据服务的API规范,当JSON在某种程度上无效时,您可能会得到400。

Good Practice:

如果请求成功,则您可能会获得2xx代码(重定向为3xx)。如果服务器上存在内部逻辑错误,则返回5xx。如果客户端请求中有任何错误,那么您可能会得到4xx代码。

 类似资料:
  • 我在Spring boot中编写了一个简单的REST,用rest assured编写的一个测试用例返回http代码400,而它在curl中运行良好。 服务: 测试类: 测试跑步者: 测试输出: 以下行显示返回400: DEBUG 组织 apache.http.impl.conn.DefaultClientConnection - 正在接收响应: HTTP/1.1 400 下面是一个很好的curl请

  • 我目前正在一个后端有Spring,前端有Angularjs的网站上工作,我们已经讨论了后端响应以处理前端的消息对话框,我有一个问题要问: 假设我有一个API: 若客户机发出一个带有无效参数(如字符串)的请求,那个么应该从服务器返回哪个响应代码?HTTP 400错误的请求和响应正文包含消息“fromTime和toTime应采用时间戳格式”,还是HTTP 200包含相同的消息? 我看到了一些Googl

  • 我正在尝试使用以下代码使用 Groovy 执行 get 请求: String url = “url of endpoint” def responseXml = new XmlSlurper().parse(url) 如果endpoint返回的状态为200,则一切正常,但有一种情况,我们必须验证如下所示的错误响应,返回的状态为400: 在这种情况下,parse方法抛出:

  • 我需要连接到后端并获得响应。我设置了一个拦截器,在发送请求之前输入我的凭据。 在这种情况下,我收到错误代码400,没有正文。然而,当我在网络导航器(Chrome)上尝试同样的操作时,我得到了授权并有访问权限,我可以看到响应。 我尝试登录的任何其他表单(Base64)或smth else返回错误代码401。在标题中:Www Authenticate:Basic realm=“我的领域”。 这里会有什

  • 我正在尝试通过网络api从Facebook Graph下载一些数据,到目前为止一切正常,不知何故,这段代码给我的错误是400,而不是json响应 当它到达此行时: 它会抛出一个IOException错误,并带有以下消息: 服务器返回的HTTP响应代码:400用于URL:https://graph.facebook.com/v2.9/sear... 在chrome中打开该url会返回页面,没有错误。

  • 我正在尝试使用Postman应用程序发送EC2 RestAPI(DescribeInstances)。我在AWS的IAM中创建了一个用户。我为该特定用户生成了AccessKeyId和SecretKey,并为用户提供了“AmazonEC2FullAccess”策略(所有EC2访问)。我在Postman中使用了以下步骤来发送ResAPI: > AccessKey=ACCESSKEYEXAMPLE 点击