SpringBoot开发(五)SpringBoot接收请求参数

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实体类

javascript 复制代码
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类

javascript 复制代码
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实体类添加方法

javascript 复制代码
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实体类添加方法

javascript 复制代码
    /**
     * @param student
     * @return
     * @desc 获取参数方式二@RequestParam-get请求
     */
    @GetMapping("/get")
    public Student getByNameAndAge(Student student) {
        return student;
    }

(2)运行,使用postman验证

1.2.3. 方式三@PathVariable

(1)StudentController实体类添加方法

javascript 复制代码
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实体类添加方法

javascript 复制代码
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实体类添加方法

javascript 复制代码
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;
    }
    @Resource
    private 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类型,则改成对应值。

相关推荐
Dear.爬虫5 分钟前
Golang中逃逸现象, 变量“何时栈?何时堆?”
开发语言·后端·golang
努力的小郑1 小时前
MySQL索引(三):字符串索引优化之前缀索引
后端·mysql·性能优化
IT_陈寒1 小时前
🔥3分钟掌握JavaScript性能优化:从V8引擎原理到5个实战提速技巧
前端·人工智能·后端
程序员清风2 小时前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
考虑考虑2 小时前
Java实现字节转bcd编码
java·后端·java ee
lanhuazui102 小时前
lua中table键类型及lua中table的初始化有几种方式
lua
AAA修煤气灶刘哥2 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督3 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
勇往直前plus3 小时前
Sentinel微服务保护
java·spring boot·微服务·sentinel
星辰大海的精灵3 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法