本文共 2366 字,大约阅读时间需要 7 分钟。
在开发Spring Boot应用时,了解如何将请求参数解析到控制器方法中是非常重要的。本文将详细介绍三种主要的参数解析方式:路径参数、请求体参数以及请求头和Cookie参数。
路径参数是通过URL路径中的占位符来传递的,常见形式为{id}。Spring Boot通过@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
@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注解来自动解析请求体。
@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
如果方法参数类型支持自动解析Spring Boot会自动处理请求体参数。例如:
@PostMapping("/demo2")public void demo2(Person person) { System.out.println(person.toString());} 除了路径参数和请求体参数,Spring Boot还支持从请求头和Cookie中提取参数。
@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
@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/