springmvc传参方式说明
表单传参
● get或者post都可以;
● 是表单,不能传body,因此没有请求体,传参会体现在URL上,k=v&k=v;
● 同个字段传多个值,会以逗号拼接的形式组合为一个字段;
后台接收
● 使用@RequestParam接收单个参数,设置必填或者非必填,默认是必填的;
● 定义类,去接收多个,默认是非必填的;
● 同时定义,都会接收到,不冲突;
body传参
● 使用body传JSON参数/或者xml或者其他text(但是消息转换器需要适配)
● body请求限于POST;
后台接收
● 后台接收使用@RequestBody支持body传参,映射到类;
● 消息转换器需要支持,可以自定义body里传任何格式,指定解析规则即可
以上2种传参方式可以并存
即body传参的同时,URL后面拼接传参
POST传参示例
curl --location --request POST '127.0.0.1:8080/zhangsan/mvc?name=张三&address=开心街&name=李四&address=幸福路' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "张无忌", "address": "武当山" }'
接口示例
@RestController @RequestMapping("zhangsan") @Slf4j public class TestDemo1 { @PostMapping(value = "mvc") public String test1(@RequestParam("name")String name, @RequestParam("name")String name2, StudentReq formReq, @RequestBody StudentReq jsonReq){ log.info("name = {}",name); log.info("name2 ={}", name2); log.info("formReq ={}", formReq); log.info("jsonReq ={}", jsonReq); return "OK"; } }
log