一个form-data格式的post接口,用户反馈api调用不成功,查询日志发现一个参数名传成了xxx,xxx的格式,本来应该是xxx。最后发现他在query参数和body参数中同时传了这个参数。
测试发现Springboot中,如果body和query参数中都传了同名字符串类型参数,会把它们合并,用英文逗号连接。而int、long类型则不会合并。
springboot代码如下
@RestController
@RequestMapping("/api/monitor")
public class MonitorController {
@PostMapping("/ok")
@ResponseBody
public String ok(@RequestParam String a, @RequestParam Long b) {
System.out.println(a);
System.out.println(b);
return "ok";
}
}
请求如下
curl --location --request POST 'http://127.0.0.1:8080/api/monitor/ok?a=xxx&b=1234' \
--form 'a="xxx"' \
--form 'b="1234"'