当前位置: 代码迷 >> java >> 如何在具有两个请求正文参数的 curl 中调用端点
  详细解决方案

如何在具有两个请求正文参数的 curl 中调用端点

热度:46   发布时间:2023-08-04 09:21:00.0

我已经定义了一个这样的方法

@RequestMapping(value="/multiRquestBody",method=RequestMethod.POST)
    public String multiRquestBodyMethod(@RequestBody String[] body1,@RequestBody String[] body2){
        System.out.println("body1 : "+body1);
        System.out.println("body 2 : "+body2);
        return Arrays.toString(body1)+"------"+Arrays.toString(body2);
    }

我使用这样的 curl 命令来调用该方法

curl -X POST  "http://localhost:7979/choudhury-rest/rest/book/multiRquestBody"     -d '["test","test","test"],["testing","testing string array"]' -H "Content-Type: application/json"

然后我得到了这样的错误

The request sent by the client was syntactically incorrect.

我试过另一种方式

curl -X POST  "http://localhost:7979/choudhury-rest/rest/book/multiRquestBody"     -d '["test","test","test"]&["testing","testing string array"]' -H "Content-Type: application/json"

但是,同样的问题来了,我该如何解决它

理想情况下,@RequestBody 应该只在方法中使用一次并保存请求的整个主体。 在您的情况下,您可以创建一个包含两个字符串数组的对象,如下所示:

@RequestMapping(value="/multiRquestBody",method=RequestMethod.POST)
public String multiRquestBodyMethod(@RequestBody StringArraysBody body){
    System.out.println("body1 : "+body.getBody1());
    System.out.println("body 2 : "+body.getBody2());
    return Arrays.toString(body.getBody1())+"------"+Arrays.toString(body.getBody2());
}

public class StringArraysBody {
   String[] body1;
   String[] body2;

   public String[] getBody1() {
     return body1;
   }

   public String[] getBody2() {
     return body2;
   }
}