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

相关推荐
喵个咪18 小时前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:Casbin集成指南
后端·go
墨守城规18 小时前
FutureTask源码分析
后端
梨子同志19 小时前
Java 基础语法详解
后端
bcbnb19 小时前
详细教程:iOS应用中Swift代码混淆步骤与工具推荐
后端
气π19 小时前
【JavaWeb】——(若依 + AI)-基础学习笔记
java·spring boot·笔记·学习·java-ee·mybatis·ruoyi
expect7g19 小时前
Paimon源码解读 -- Compaction-8.专用压缩任务
大数据·后端·flink
开心就好202519 小时前
H5 混合应用加密 Web 资源暴露到 IPA 层防护的完整技术方案
后端
bcbnb19 小时前
最新版本iOS系统设备管理功能全面指南
后端
开心就好202519 小时前
Fastlane + Appuploader 的工程组合,自动化发布中的分工
后端
YDS82919 小时前
SpringCould —— 网关详解
后端·spring·spring cloud