当前位置: 代码网 > it编程>编程语言>Java > SpringBoot请求参数接收控制指南分享

SpringBoot请求参数接收控制指南分享

2025年04月25日 Java 我要评论
spring boot 请求参数接收控制指南1. 概述在spring boot项目中,我们可以通过不同的注解来接收来自http请求的各种参数。本指南将详细介绍各种参数接收方式及其使用场景。2. 有注解

spring boot 请求参数接收控制指南

1. 概述

在spring boot项目中,我们可以通过不同的注解来接收来自http请求的各种参数。

本指南将详细介绍各种参数接收方式及其使用场景。

2. 有注解时参数接收方式对比

参数类型注解位置适用http方法示例
路径参数@pathvariableurl路径中get, delete/users/{id}
查询参数@requestparamurl?后get/users?name=john
请求体@requestbody请求体post, put, patchjson/xml数据
请求头@requestheaderhttp头任意authorization: bearer token
cookie值@cookievaluecookie头任意cookie: jsessionid=xxx
表单数据@requestparam表单体postapplication/x-www-form-urlencoded
文件上传@requestparammultipart/form-datapost文件上传表单

3. 无注解时接收参数默认位置

spring boot 默认参数绑定规则(不加注解时)

请求类型参数类型默认绑定位置示例注意事项
get基本类型/string自动绑定到url查询参数get /user?name=tom → public string getuser(string name)参数名必须与url中的key一致
pojo对象自动绑定到url查询参数get /user?name=tom&age=20 → public string getuser(user user)对象的字段名需与url参数匹配
数组/集合自动绑定到url查询参数get /user?ids=1,2,3 → public string getuser(list<integer> ids)支持逗号分隔或同名参数(ids=1&ids=2)
post基本类型/string表单数据 (form data)post /user (content-type: application/x-www-form-urlencoded)需设置content-type为表单类型
pojo对象表单数据或json请求体若为application/json → 绑定到请求体;若为表单 → 按字段名匹配需明确指定content-type,否则可能解析失败
数组/集合表单数据或json请求体同pojo规则表单格式需用同名参数(names=tom&names=jerry)
multipartfile文件上传 (multipart)post /upload (enctype="multipart/form-data")必须设置enctype="multipart/form-data"
put/patch所有类型json/xml请求体put /user { "name": "tom" } → public string updateuser(user user)默认按@requestbody处理,需显式加注解才能覆盖
delete基本类型/stringurl查询参数delete /user?id=123 → public string deleteuser(long id)与get相同
pojo对象不支持-delete通常只用路径参数或简单查询参数

关键规则总结

get/delete 请求

  • 参数默认绑定到 url查询字符串?key=value)。
  • pojo对象会按字段名自动拆解到查询参数。

post 请求

  • 默认按 表单数据application/x-www-form-urlencoded)解析。
  • 若请求头为 content-type: application/json,则需显式加 @requestbody,否则绑定失败。

put/patch 请求

  • 默认按请求体(json/xml)处理,类似@requestbody行为,但实际开发中建议显式加注解。

特殊类型

  • multipartfile:仅在 multipart/form-data 类型的post中自动绑定。
  • 数组/集合:支持url查询参数(get)或表单同名参数(post)。

常见误区澄清

表单数据不会放在请求头

  • 请求头仅用于元数据(如content-typeauthorization等),表单内容一定在请求体。

get请求能否带表单数据?

  • ❌ 不能。get请求的参数只能通过url查询字符串(?key=value)传递,且长度受限。

不加注解时spring boot如何绑定表单数据?

  • 默认按参数名匹配请求体中的表单字段(需参数名与表单字段名一致)。

post json vs 表单数据

  • json数据必须显式使用@requestbody,而表单数据默认绑定(无需注解)。

4.http请求参数位置自定义控制对照表

参数位置spring boot注解手动提取方式适用场景示例请求
url路径参数@pathvariablehttpservletrequest.getrequesturi()restful资源标识get /users/123 → id=123
url查询参数@requestparamrequest.getparameter("name")过滤条件、分页get /users?name=tom → name=tom
请求头@requestheaderrequest.getheader("authorization")认证令牌、客户端信息header: authorization: bearer xxx
请求体(json)@requestbodyinputstream + json解析库复杂数据提交post /users + {"name":"tom"}
请求体(表单)@requestparamrequest.getparametermap()传统表单提交post /login + username=tom&password=123
请求体(文件)@requestpartmultiparthttpservletrequest文件上传post /upload + multipart/form-data
cookie@cookievaluerequest.getcookies()会话管理cookie: sessionid=abc123

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com