【问题标题】:Putting multipart request does not work提出多部分请求不起作用
【发布时间】:2013-08-08 00:23:39
【问题描述】:

为什么这不起作用?我正在对我的 Spring 3.2 MVC 应用程序进行尝试。它适用于 POST 请求。

curl -X PUT http://localhost:8080/bananas/1 --form data='{"description":"Hei", "status":"REJECTED"};type=application/json'

java.lang.IllegalArgumentException:获取请求部分失败: 数据。部分丢失或未配置多部分处理。

@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
    public ResponseEntity updateQuestion(@PathVariable final int id,
                                         @RequestPart(value = "data") final Banana banana,
                                         @RequestPart(value = "image", required = false) final MultipartFile imageFile) {

【问题讨论】:

  • 您可能会在这里找到答案:stackoverflow.com/q/15058548/732771
  • 我看到了菲尔丁的答案,但我不确定我是否理解它。我应该改用 POST 来代替正确的用法还是什么?

标签: java spring jakarta-ee curl


【解决方案1】:

实际上,PUT 请求应该在请求正文(或有效负载)上工作,而不是在请求参数上工作。从这个意义上说,servlet API & spring 的处理是正确的。

从 jquery 和 javascript 调用中传递任何数据元素的更好更简单的方法。将参数作为 url 的一部分传递。意味着在 url 字段中设置参数。否则你必须使用 GET 来执行代码。

【讨论】:

    【解决方案2】:
    var x=10;
    $.ajax({
                url: "/ritesh/" + x + "/patil" + "?param1=param2Val&..",
                type: "PUT",
                data: "",
                success: function(response) {
                    // ....
                }
         });
    

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 1970-01-01
      • 2014-03-02
      • 2015-01-29
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      相关资源
      最近更新 更多