博客
关于我
pringBoot Controller接收参数的几种常用方式
阅读量:795 次
发布时间:2023-03-04

本文共 2366 字,大约阅读时间需要 7 分钟。

Spring Boot 请求参数解析指南

在开发Spring Boot应用时,了解如何将请求参数解析到控制器方法中是非常重要的。本文将详细介绍三种主要的参数解析方式:路径参数、请求体参数以及请求头和Cookie参数。


第一类:路径参数

路径参数是通过URL路径中的占位符来传递的,常见形式为{id}。Spring Boot通过@PathVariable注解可以直接从路径中提取这些参数。

1. @PathVariable注解

使用@PathVariable注解可以直接从路径中提取参数。例如:

@GetMapping("/demo/{id}")public void demo(@PathVariable(name = "id") String id, @RequestParam(name = "name") String name) {    System.out.println("id=" + id);    System.out.println("name=" + name);}

示例请求http://localhost:8080/demo/123?name=suki_rong

输出结果

id=123name=suki_rong

2. @RequestParam注解

@RequestParam注解用于从HTTP查询参数中提取值。如果不指定name属性,参数名将与方法参数名匹配。例如:

@GetMapping("/demo")public void demo(@RequestParam(name = "name") String name) {    System.out.println("name=" + name);}

示例请求http://localhost:8080/demo?name=suki_rong

输出结果

name=suki_rong

第二类:请求体参数

对于需要传递JSON或其他形式数据的POST请求,Spring Boot支持使用@RequestBody注解来自动解析请求体。

1. @RequestBody注解

@RequestBody注解可以将请求体解析为方法参数。例如:

@PostMapping("/demo1")public void demo1(@RequestBody Person person) {    System.out.println(person.toString());}

示例请求(使用Postman):

{    "name": "suki_rong",    "age": 18,    "hobby": "programming"}

输出结果

name:suki_rong;age=18;hobby:programming

如果需要将请求体解析为Map<String, String>类型,可以使用以下方式:

@PostMapping("/demo1")public void demo1(@RequestBody Map
person) { System.out.println(person.get("name"));}

示例请求

输出结果

suki_rong

2. 无注解情况

如果方法参数类型支持自动解析Spring Boot会自动处理请求体参数。例如:

@PostMapping("/demo2")public void demo2(Person person) {    System.out.println(person.toString());}

第三类:请求头参数以及Cookie

除了路径参数和请求体参数,Spring Boot还支持从请求头和Cookie中提取参数。

1. @RequestHeader注解

@RequestHeader注解可以从HTTP请求头中提取特定参数。例如:

@GetMapping("/demo3")public void demo3(@RequestHeader(name = "myHeader") String myHeader,                  @CookieValue(name = "myCookie") String myCookie) {    System.out.println("myHeader=" + myHeader);    System.out.println("myCookie=" + myCookie);}

示例请求

Header: myHeader=testCookie: myCookie=suki_rong

输出结果

myHeader=testmyCookie=suki_rong

2. @CookieValue注解

@CookieValue注解用于从请求的Cookie中提取特定参数。例如:

@GetMapping("/demo3")public void demo3(HttpServletRequest request) {    System.out.println(request.getHeader("myHeader"));        for (Cookie cookie : request.getCookies()) {        if ("myCookie".equals(cookie.getName())) {            System.out.println(cookie.getValue());        }    }}

以上就是Spring Boot中常见的请求参数解析方式,通过合理运用这些注解,可以更高效地处理各种类型的HTTP请求。

转载地址:http://yqxfk.baihongyu.com/

你可能感兴趣的文章
POJ 基础数据结构
查看>>
POJ 题目3020 Antenna Placement(二分图)
查看>>
Poj(1797) Dijkstra对松弛条件的变形
查看>>
SpringBoot为什么不需要xml配置文件?
查看>>
POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
查看>>
Qt笔记——SQLite初探QSqlDatabase QSqlQuery
查看>>
POJ-1163-The Triangle
查看>>
POJ-Fence Repair 哈夫曼树
查看>>
poj1061 - 同余方程,二元一次不定方程
查看>>
Qt笔记——SQLite再探
查看>>
poj1068Parencodings
查看>>
poj1182(带权并查集)
查看>>
POJ1182(带权并查集)
查看>>
Qt笔记——Qt初探、PyQt5和Qt5
查看>>
poj1190生日蛋糕
查看>>
POJ1218 HDU1337 ZOJ1350 UVALive2557 THE DRUNK JAILER
查看>>
poj1222 EXTENDED LIGHTS OUT(gauss)
查看>>
POJ1240 m叉树
查看>>
Poj1328--Radar Installation(区间选点)
查看>>
POJ1384Piggy-Bank(DP)
查看>>