讲解基于springboot + vue + axios项目。
- Content-Type位于请求头和响应头,在请求中指示请求体的数据类型;在响应中指示响应体的数据类型。在HTTP请求中,默认的Content-Type类是"application/x-www-form-urlencoded",而在HTTP响应中,默认的Content-Type类型取决于所返回的内容类型,如HTML、纯文本或JSON等,springboot通常返回JSON数据,则Content-Type为application/json
- get请求可以用于提交表单,但是表单数据会以查询参数的形式拼接到url中,这样有两个弊端,url长度是受限的和数据明文暴露不安全。提交表单一般使用post请求,这种请求方式先设置Content-Type为application/x-www-form-urlencoded,表单数据会跟据Content-Type类型进行url编码,使得表单数据在传输过程中相对安全,表单数据会放到请求体中。将表单数据封装到请求体中是由浏览器或HTTP请求库(比如axios)来完成的:通过前端页面点击按钮提交表单是浏览器将表单数据封装到请求体的,通过axios代码提交表单是由HTTP请求库(即axios)将表单数据封装到请求体的
- 请求发送过程:(1)axios设置请求体中数据的类型,即设置Content-Type的类型。(2)前端工程师组织请求参数。(3)axios自动将请求参数转化为Content-Type规定的类型并将其封装到请求体中。(4)springboot接收到请求,查看请求头中的Content-Type并跟据其指定的类型解析请求体,先解析出JSON类型的请求参数来。(5)springboot的类型转换器开始工作,将JSON类型的请求参数转换为处理方法的参数类型,这是自动的过程,表现出的效果就是后端得到了处理方法所需要的参数类型的请求参数
- springboot中的请求传参方式:
(1)路径参数,相关注解为@PathVariable。@PathVariable用于将路径参数绑定到方法参数上。使用方法:
@GetMapping(“/{id}”)
public User queryById(@PathVariable(“id”) String userId){
return userService.getById(userId);
}或
@GetMapping(“/{id}”)
public User queryById(@PathVariable String id){
return userService.getById(id);
}
(2)查询参数即在url中通过?拼接参数,相关注解为@RequestParam,注意@RequestParam可以处理查询参数,但查询参数的处理并不一定需要@RequestParam,也可以不用任何注解
(3)请求体参数,相关注解为@RequestBody,@RequestBody用来接收请求体中的数据,@RequestBody 注解将请求体自动转换为 Java 对象。@RequestBody标注一个对象,请求中的JSON数据的字段,能与它标注的对象的属性对应的,就给属性赋值。 - springboot中的请求风格及相关注解:(1)普通请求 (2)restful请求
(1)普通请求
//增
@PostMapping
public boolean add(@RequestBody User user){
return userService.save(user);
}
//删
@DeleteMapping
public boolean delete(@RequestParam String id