axios基本认识
axios(){
// url:" ",请求路径
// method:" ",请求方式
// params:{},参数列表,以name=value&name=value的方式发送,而且无论是get还是set都会拼接到请求地址,可以在后端通过req.getParameter()获得
// data()也是参数列表,以json格式发送请求参数,请求参数保存在请求报文的请求体中,由于get没有请求体不能用get方式,不可通过req.getParameter,只能通过处理json的jar工具来转换成java对象
}.then(function (response) {//response封装了响应的数据,具体是response.data中
console.log(response);
})
或者
具体参考Axios中文文档 | Axios中文网 (axios-http.cn)
json格式
{
"key1": "value1",
"key2": "value2",
"key3": true,
"key4": [1, 2, 3],
"key5": {
"nestedKey": "nestedValue"
}
}
- json对象采用键值对形式,name:value形式,我们获取到的就是字符串json格式,{“key1”:“value1”,“key”:“value2”…}
@RequestBody处理json格式的请求参数
- 使用@RequestBody可以获取请求体,用它标识控制器方法的String类型形参,那么这个形参能获取请求体的内容(json)
- 但是怎么把这个字符串(json)转换为java的实体对象
- 使用@RequestBody将json格式的参数转换为java对象
- 导入jackson依赖
- 在SpringMVC设置注解驱动(已经设置)
- 在控制器方法形参位置设置一个java对象来接收json格式数据或者使用map集合接收,并使用@RequestBody注解标识
- json字符串格式自动转换为java对象中的属性,没有对应的属性就不赋值,用map集合也可以接收
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
@ResponseBody注解响应json格式数据(用的非常多)
- 将所标识的控制器的方法的返回值作为响应报文的响应体发送给前端
- 我们之前的控制器方法返回字符串会被视图解析器自动解析为视图
- 我们可以通过@ResponseBody来表示让他返回的这个字符串(也可以是java对象,但是不能直接用)作为响应体给前端而不是视图
- 这样我们axios可以从response中读取到数据
- 使用@ResponseBody注解响应json格式数据给前端
- 将java对象转换为json字符串,然后通过返回值返回给前端
- 示例代码
@PostMapping("/text/response")
@ResponseBody
public User textaxios(@RequestBody User user){
System.out.println(user);
return user;
}
通过@requestBody接收axios发来的json数据,
然后通过@responseBody发送user对象并且自动转换为json给前端
上面都需要第三方jakson的jar包和SpringMVC的注解驱动
- 转换规则
- java map会转换为json对象
- java 实体类会转换为json对象
- java list会转换为json数组