gpt4 book ai didi

java - Controller 在一种环境中接受 null 作为请求主体,但在另一种环境中拒绝

转载 作者:行者123 更新时间:2023-12-02 09:55:19 25 4
gpt4 key购买 nike

我在生产和开发环境之间遇到了令人费解的行为。

我的Spring Controller 如下(两个环境之间相同)

    @RequestMapping(value = "/find")
@ResponseBody
public List<D> find(@RequestBody P params) throws Exception {
// omitted
}

当 Chrome 在生产环境中发出请求时,浏览器会收到正确的响应:

enter image description here

但是,当开发环境中 Chrome 完成请求时,Spring 会打印警告(警告指出缺少请求正文)

WARN [qtp543254421-52] AbstractHandlerExceptionResolver.java:197 -
Resolved
[org.springframework.http.converter.HttpMessageNotReadableException:
Required request body is missing: public java.util.List<D>
pl.kg.ut.postgres.controller.ReadPostgresController.find(P) throws java.lang.Exception]

这是来自 Chrome 的该请求的屏幕截图。

enter image description here

当我们比较两个请求(来自开发和生产)时,会发现一些相似之处和不同之处。请求URL、请求方法和请求负载相同。 (值得注意的是,请求有效负载为空,但 Controller 需要有效负载。)不同的是请求 header :当从生产中发出请求时,请求 header 会更多。

最佳答案

你绝对不应该使用带有正文的 GET HTTP 方法请求来进行解析。

数据封装是通过 HTTP POST 完成的,用于存储请求的正文。请尝试使用下面定义的代码来发布有效负载。

@RequestMapping(value = "/find", method=RequestMethod.POST)
@ResponseBody
public List<D> find(@RequestBody P params) throws Exception {
// omitted
}

关于java - Controller 在一种环境中接受 null 作为请求主体,但在另一种环境中拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56042160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com