SpringBoot注解之@RequestBody
初学Springboot,对于里面的注解一知半解,在此记录一下
@RequestBody注解,英文意思是请求体,一般是用来处理Content-Type不是默认的application/x-www-form-urlcoded编码的内容,最常见的就是application/json以及application/xml的类型,针对我们目前常用的http协议接口,一般就是application/json
该注解大致有两个作用:
1. 可以将请求体中的JSON字符串绑定到相应的bean上
2. 也可以将其分别绑定到对应的字符串上
假如现在我有一个UserBean类,
public class UserBean {
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String pwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
我现在前端想要进行登入操作,调用ajax请求,代码如下
$.ajax({
url:"/login",
type:"POST",
data:'{"userName":"admin","pwd","admin123"}',
content-type:"application/json charset=utf-8",
success:function(data){
alert("request success ! ");
}
});
可以看到此时,调用了/login接口,请求方式是POST,请求体是{“userName”:“admin”,“pwd”,“admin123”},服务器也就是Controller需要接收到userName和pwd两个参数,利用@RequestBody注解可以有两种实现方式:
@Controller
public class LoginController {
@RequestMapping(value = "/login",method = RequestMethod.POST)
public void login1(@RequestBody UserBean user){
System.out.println(user.toString());
}
@RequestMapping(value = "/login",method = RequestMethod.POST)
public void login2(@RequestBody String userName, @RequestBody String pwd){
System.out.println("用户名为:"+userName+",密码为:"+pwd);
}
}
需要注意的是,JSON字符串中的key必须对应userBean中的属性名,否则是请求不过去的。