如果没有特殊的设置,无论用什么样的http请求方法,只要携带body参数,用@RequestBody都是可以获取到body的内容的
参数是json字符串格式,使用方式有两种
@RequestBody只有一个属性,required默认等于true,如果不设置required属性,就默认必须传body体,否则会报400错误,如果设置了body体,但是没有设置header或者设置了header:content-type!=application/json ,会报415错误
第一种:使用@RequestBody注解一个字符串变量
@Controller@RequestMapping("/springmvc/test/RequestBody")public class RequestBodyTestController {
@RequestMapping(value="/test3") @ResponseBody public Result testBody3(@RequestBody(required=false) String person){ if(person==null){ return Result.success("testBody3 test pass,person="+person); }else { JSONObject jsonObject = JSONObject.parseObject(person); return Result.success("testBody3 test pass,username=" + jsonObject.getString("name")); } }}
第二种:使用@RequestBody注解一个对象,请求的时候记得设置header:content-type=application/json ,否则会报415错误,而且json字符串中的参数名要跟对象的属性名相同才能取到值
//定义一个Person类public class Person{ private int id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId(){ return id; } public void setId(int id){ this.id=id } }
@Controller@RequestMapping("/springmvc/test/RequestBody")public class RequestBodyTestController { @RequestMapping(value="/test1") @ResponseBody
public Result testBody1(@RequestBody Person person){ if(person==null){ return Result.success("test1 test pass,person="+person); }else { return Result.success("test1 test pass,id="+person.getId()+",username=" + person.getName()); }}}
原文地址:https://www.cnblogs.com/zhaijing/p/10337481.html
时间: 2024-10-14 09:55:02