开发者

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

目录
  • Spring Boot 请求参数接收控制指南
    • 1. 概述
    • 2. 有注解时参数接收方式对比
    • 3. 无注解时接收参数默认位置
      • Spring Boot 默认参数绑定规则(不加注解时)
      • 关键规则总结
      • 常见误区澄清
    • 4.HTTP请求参数位置自定义控制对照表
    • 总结

      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 getUsewww.devze.comr(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/DELEphpTE 请求

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

      POST 请求

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

      PUT/PATCH 请求

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

      特殊类型

      • 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

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜