因为前端人员要求传到后端的查询数据也要是json格式,所以后端获取的是json格式的信息流。
首先要明确一点,一般开发接口时是要写接口文档的,这代表我们已经把可以传哪些属性,以及对应属性名,属性类型都告知给前端开发人员了,现在我们要做的就是获取这个信息流并且解析出来一一对应到我们预设的变量里。
查阅了一些资料后我发现参数改成@RequestBody 类名 对象名可以通过对象获取。
比如:
我先创建一个java类
public class UserInfo{
private String Id;
private String name;
private String sex;
//set/get/constructor我在这就不弄了,要求加的。
}
那么只要前端是按照UserInfo里属性传json,比如:
{
"Id": "123",
"name": "a",
"sex": "女"
}
在后端这样设计即可:
public String getUser(@RequestBody UserInfo userInfo){
//这个@RequestBody 能把json转化为对象
String Id = userInfo.getId();
//同样name和sex都可以像Id那样get得到
//当然在类里得定义好get和set方法,一般idea或eclipse都可以做到的
}
有时候因为创建的UserInfo我们需要它保存的都是关联信息,但我们又需要一些通用的但又和这个类没关系的信息,比如我想要当前的用户loginUserId,又或者我想要返回的信息是前10个人,我想要限制返回的数量returnNumber,如果像下面这样传肯定是错的:
{
"Id": "123",
"name": "a",
"sex": "女",
"loginUserId": "b",
"returnNumber": 10
}
这样子传一定出错,因为{}已经被要求是UserInfo的消息,loginUserId和returnNumber都不在里面,所以这么传系统去UserInfo里去找又找不到铁报错。正确方法如下:
①再创建一个专门用来存通用信息的类
public class CommonInfo{
private String loginUserId;
private int returnNumber;
//set/get/constructor我在这就不弄了,要求加的。
}
②把通用类放到UserInfo类中
public class UserInfo{
private String Id;
private String name;
private String sex;
//set/get/constructor我在这就不弄了,要求加的。
private CommonInfo commonInfo;
}
③json格式调整
{
"Id": "123",
"name": "a",
"sex": "女",
commonInfo:{
"loginUserId": "b",
"returnNumber": 10
}
}