1. SpringBoot接收请求参数
1.1. 获取参数的方式
(1)通过request对象获取参数
(2)@RequestParam(针对请求头方式为x-www-form-ur lencoded)
(3)@RequestBody(针对请求头方式为application/json)
(4)@PathVariable(接收url路径参数)
1.2. 学员案例
1.2.1. 方式一
(1)在model文件夹下创建Student实体类
package com.zzs.szyj.model;
public class Student {private String name;private Integer sex;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}
(2)在controller文件夹下创建StudentController类
package com.zzs.szyj.controller;
import com.zzs.szyj.model.Student;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/student")
@RestController
public class StudentController {@PostMapping("save")public Student save(Student student) {return student;}
}
(3)运行,使用postman验证
1.2.2. 方式二@RequestBody
1.2.2.1. post请求
(1)StudentController实体类添加方法
package com.zzs.szyj.controller;
import com.zzs.szyj.model.Student;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/student")
@RestController
public class StudentController {/*** 获取参数方式一request** @param student* @return*/@PostMapping("save")public Student save(Student student) {return student;}/*** 获取参数方式二@RequestParam** @param student* @return*/@PostMapping("/save/json")public Student saveByJson(@RequestBody Student student) {return student;}
}
(2)运行,使用postman验证
1.2.2.2. get请求
(1)StudentController实体类添加方法
/*** @param student* @return* @desc 获取参数方式二@RequestParam-get请求*/@GetMapping("/get")public Student getByNameAndAge(Student student) {return student;}
(2)运行,使用postman验证
1.2.3. 方式三@PathVariable
(1)StudentController实体类添加方法
package com.zzs.szyj.controller;
import com.zzs.szyj.model.Student;
import org.springframework.web.bind.annotation.*;
@RequestMapping("/student")
@RestController
public class StudentController {/*** @param student* @return* @desc 获取参数方式一request*/@PostMapping("save")public Student save(Student student) {return student;}/*** @param student* @return* @desc 获取参数方式二@RequestParam-post请求*/@PostMapping("/save/json")public Student saveByJson(@RequestBody Student student) {return student;}/*** @param student* @return* @desc 获取参数方式二@RequestParam-get请求*/@GetMapping("/get")public Student getByNameAndAge(Student student) {return student;}/*** @param age* @return* @desc 获取参数方式三@PathVariable-get请求*/@GetMapping("/get/{age}")//@GetMapping("/get/{age1}")public Student getByUrlParam(@PathVariable Integer age) {//public Student getByUrlParam(@PathVariable("age1") Integer age) {Student student = new Student();student.setAge(age);return student;}
}
(2)运行,使用postman验证
1.2.4. 方式四@RequestParam
(1)StudentController实体类添加方法
package com.zzs.szyj.controller;import com.zzs.szyj.model.Student;
import org.springframework.web.bind.annotation.*;@RequestMapping("/student")
@RestController
public class StudentController {/*** @param student* @return* @desc 获取参数方式一request*/@PostMapping("save")public Student save(Student student) {return student;}/*** @param student* @return* @desc 获取参数方式二@RequestParam-post请求*/@PostMapping("/save/json")public Student saveByJson(@RequestBody Student student) {return student;}/*** @param student* @return* @desc 获取参数方式二@RequestParam-get请求*/@GetMapping("/get")public Student getByNameAndAge(Student student) {return student;}/*** @param age* @return* @desc 获取参数方式三@PathVariable-get请求*/@GetMapping("/get/{age}")//@GetMapping("/get/{age1}")public Student getByUrlParam(@PathVariable Integer age) {//public Student getByUrlParam(@PathVariable("age1") Integer age) {Student student = new Student();student.setAge(age);return student;}/*** @param age* @return* @desc 获取参数方式四@RequestParam-get请求*/@GetMapping(("/getParam"))public Student getByRequestParam(@RequestParam("name1") String name,@RequestParam("age1") Integer age) {
// public Student getByRequestParam(
// String name, Integer age) {Student student = new Student();student.setAge(age);student.setName(name);return student;}
}
(2)运行,使用postman验证
1.2.5. 方式五request
(1)StudentController实体类添加方法
package com.zzs.szyj.controller;import com.zzs.szyj.model.Student;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.*;import java.util.Date;@RequestMapping("/student")
@RestController
public class StudentController {/*** @param student* @return* @desc 获取参数方式一*/@PostMapping("save")public Student save(Student student) {return student;}/*** @param student* @return* @desc 获取参数方式二@RequestParam-post请求*/@PostMapping("/save/json")public Student saveByJson(@RequestBody Student student) {return student;}/*** @param student* @return* @desc 获取参数方式二@RequestParam-get请求*/@GetMapping("/get")public Student getByNameAndAge(Student student) {return student;}/*** @param age* @return* @desc 获取参数方式三@PathVariable-get请求*/@GetMapping("/get/{age}")//@GetMapping("/get/{age1}")public Student getByUrlParam(@PathVariable Integer age) {//public Student getByUrlParam(@PathVariable("age1") Integer age) {Student student = new Student();student.setAge(age);return student;}/*** @param age* @return* @desc 获取参数方式四@RequestParam-get请求*/@GetMapping(("/getParam"))public Student getByRequestParam(@RequestParam("name1") String name,@RequestParam("age1") Integer age) {
// public Student getByRequestParam(
// String name, Integer age) {Student student = new Student();student.setAge(age);student.setName(name);return student;}@Resourceprivate HttpServletRequest request;/*** @return* @desc 获取参数方式五-request*/@GetMapping("/getByRequest")public Student getByRequest() {String name = request.getParameter("name1");Integer age = Integer.valueOf(request.getParameter("age1"));Student student = new Student();student.setAge(age);student.setName(name);return student;}
}
(2)运行,使用postman验证
2. SpringBoot接收请求参数报错
postman踩过的坑: “status“: 415, “error“: “Unsupported Media Type“
2.1. 问题概况
使用postman调接口的时候,status返回415,error提示Unsupported Media Type(不支持的媒体类型)。
2.2. 解决方案
Headers中添加类型
(1)点击Headers,添加KEY值:Content-Type,VALUE值:application/json,如果传递的不是json则改成对应值。
(2)检查body传参类型
点击Body,传json格式数据时,选择JSON,如果传递的不是json类型,则改成对应值。