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类型,则改成对应值。

相关推荐
uzong3 小时前
技术故障复盘模版
后端
GetcharZp4 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程4 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研4 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi4 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
一只爱撸猫的程序猿5 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋5 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国5 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy5 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack6 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt