前言
当前后端分离已成为主流开发模式,前端如何向后端传递参数,是每个 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。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论