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

相关推荐
朝新_7 小时前
【SpringBoot】玩转 Spring Boot 日志:级别划分、持久化、格式配置及 Lombok 简化使用
java·spring boot·笔记·后端·spring·javaee
一 乐7 小时前
二手车销售|汽车销售|基于SprinBoot+vue的二手车交易系统(源码+数据库+文档)
java·前端·数据库·vue.js·后端·汽车
用户5965906181347 小时前
在asp.net 控制器传入json对象的格式验证的几种方法
后端
国服第二切图仔8 小时前
Rust入门开发之Rust中如何实现面向对象编程
开发语言·后端·rust
Mos_x8 小时前
15.<Spring Boot 日志>
java·后端
William_cl8 小时前
【ASP.NET MVC 进阶】DataAnnotations 特性验证全解析:从基础到避坑,让数据校验像 “安检“ 一样靠谱
后端·asp.net·mvc
SimonKing8 小时前
你的项目还在用MyBatis吗?或许这个框架更适合你:Easy-Query
java·后端·程序员
货拉拉技术8 小时前
从代码到配置:如何用SQL配置实现数据核对
java·后端
xuejianxinokok8 小时前
可能被忽略的 pgvector 各种坑
数据库·后端
用户345675638388 小时前
Python+Requests零基础系统掌握接口自动化测试
后端