SpringBoot接口参数接收指南:从URL到请求体,4种方式一次掌握
作者:碎碎念...
前言
当前后端分离已成为主流开发模式,前端如何向后端传递参数,是每个 Spring Boot 开发者必须掌握的技能。
本文将带你快速掌握 Spring 中最常见的四种参数接收方式,并通过简单示例一一拆解它们的使用场景与差异。
1. Request 简介
在正式介绍注解之前,我们先快速了解一下 HTTP 请求的数据结构。
一个典型的 HTTP 请求由三部分组成:
- 请求行:包括 URL 路径、方法(GET、POST)等;
- 请求头(Headers):携带客户端信息、Token 等;
- 请求体(Body):通常用于 POST/PUT 请求中,存放结构化数据(如 JSON)。
四种注解的本质就是从这些不同部分中提取参数。
2. 四种方式速览
Spring Boot 接收前端数据的常见方式包括:
@PathVariable:用于接收 URL 路径中的参数;@RequestParam:用于接收查询参数或表单数据;@RequestHeader:用于接收请求头中的信息;@RequestBody:用于接收 JSON 或 XML 格式的请求体数据。
后文将依次介绍这四种方式的使用方法及适用场景。
3.@PathVariable注解
用于接收 URL 路径中的变量,例如 /user/{id}。常用于 RESTful 风格接口。
示例:
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
4.@RequestHeader注解
用于接收请求头中的参数,常用于读取 Token、User-Agent 等。
示例:
@GetMapping("/device")
public String getDevice(@RequestHeader("User-Agent") String userAgent) {
return "User-Agent: " + userAgent;
}
5.@RequestParam注解
用于接收 URL 中的查询参数或表单提交的数据,常见于 GET 或表单 POST 请求。
示例:
@GetMapping("/search")
public String search(@RequestParam String keyword) {
return "Searching: " + keyword;
}
对于 GET 请求,查询参数拼接在 URL 路径后;对于 Content-Type 为 application/x-www-form-urlencoded 的 POST 请求,表单数据以键值对形式编码放在请求体中。
使用 @RequestParam 注解可以方便地接收这两类参数。
6.@RequestBody注解
用于接收请求体中的 JSON 或 XML 数据,通常用于 POST/PUT 请求配合实体类使用。
示例:
@PostMapping("/login")
public String login(@RequestBody User user) {
return "Welcome " + user.getUsername();
}
GET 请求没有请求体,不能使用 @RequestBody 接收参数。对于 Content-Type 为 application/json 的 POST/PUT 请求,@RequestBody 可用于接收请求体中的 JSON 数据。
一个方法中只能有一个 @RequestBody 注解,通常使用 Java Bean、DTO 或 Map 来接收整体结构化数据。
7. 总结
本文通过示例梳理了 Spring Boot 接收前端数据的四种常用注解。选用哪种方式,取决于你的业务场景和前端的请求结构:
- URL 参数:
@PathVariable - 查询参数 / 表单数据:
@RequestParam - 请求头信息:
@RequestHeader - JSON 请求体:
@RequestBody
掌握这些基础注解,能够帮助你更高效地开发 Web 接口,构建清晰、规范的 API。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
