【问题标题】:ajax POST error - Required request parameter 'data' for method parameter type String is not presentajax POST 错误 - 方法参数类型字符串所需的请求参数 \'data\' 不存在
【发布时间】:2023-01-07 08:18:24
【问题描述】:

还有其他几个标题几乎相同但根本原因实际上是程序员错误的问题。

在 javascript 中,我将数百 kb 的数据发布回 spring boot postcontroller。这几乎适用于所有情况,但偶尔会记录错误。

使用标准的 Spring 后控制器:

@PostMapping("/myController)
public void create(@RequestBody String data) {

    ...
}

并从标准的 jquery ajax 调用发布到该控制器:

$.ajax({
  type: "POST",
  url: "http://myServer.com/myController",
  data: myBigData,
  timeout: 5000,
});

使用此方法发布数百 kb 的有效负载有效,但在极少数情况下会记录错误:

方法参数类型字符串所需的请求参数“数据”是 不存在

任何标准测试都无法重现此错误。

【问题讨论】:

    标签: java spring spring-boot post


    【解决方案1】:

    这个错误是由于ajax调用成功与服务器控制器联系并开始传输数据,然后无法完成传输引起的。 ajax 超时或连接丢失可能导致传输不完整。

    要重现错误,请创建一个包含几 MB 数据和几秒超时的 ajax 帖子。超时时间不能短到 ajax 在与服务器联系之前就结束,但也不能长到足以让 post 完成。

    在您的浏览器中将您的网络节流设置为“慢速 3G”。

    发起帖子。

    服务器将在没有调用控制器的情况下记录错误。错误将是

    方法参数类型字符串所需的请求参数“数据”不存在

    【讨论】:

      猜你喜欢
      • 2023-01-07
      • 2021-09-21
      • 1970-01-01
      • 2021-11-08
      • 2021-12-20
      • 2023-03-23
      • 2021-08-03
      • 1970-01-01
      • 2019-08-25
      相关资源
      最近更新 更多