HTTP 与 SpringBoot 参数提交与接收协议方式

 更新时间:2025年07月26日 11:16:38   作者:Full Stack Developme  
HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据请求方法和Content-Type差异,SpringBoot通过特定注解如@RequestParam、@RequestBody实现数据获取,本文介绍HTTP与SpringBoot参数提交与接收协议方式,感兴趣的一起看看

HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Type)。

以下是主要的参数提交协议:

1. URL 查询参数 (Query Parameters)

  • 请求方法: GET (也可用于其他方法)
  • 格式: ?key1=value1&key2=value2
  • 示例: GET /users?id=123&name=John
  • 获取方式:
    • SpringBoot: @RequestParam
    • Servlet: request.getParameter()

2. 表单提交 (Form Data)

  • 请求方法: POST (也可用于 PUT/PATCH)
  • Content-Type: application/x-www-form-urlencoded 或multipart/form-data
  • 格式:
    • application/x-www-form-urlencodedkey1=value1&key2=value2 (类似查询参数但在请求体中)
    • multipart/form-data: 用于文件上传,包含边界分隔符
  • 示例:
<form action="/submit" method="post" enctype="application/x-www-form-urlencoded">
  <input name="username" value="John">
  <input type="submit">
</form>
  • 获取方式:
    • SpringBoot: @RequestParam 或 @ModelAttribute
    • Servlet: request.getParameter()

3. JSON 请求体 (JSON Payload)

  • 请求方法: POST/PUT/PATCH/DELETE
  • Content-Type: application/json
  • 格式: JSON 对象
  • 示例:
{
  "name": "John",
  "age": 30
}
  • 获取方式:
    • SpringBoot: @RequestBody
    • Servlet: 通过 request.getReader()读取输入流

4. XML 请求体 (XML Payload)

  • 请求方法: POST/PUT/PATCH/DELETE
  • Content-Type: application/xml或 text/xml
  • 格式: XML 文档
  • 示例:
<user>
  <name>John</name>
  <age>30</age>
</user>
  • 获取方式:
    • SpringBoot: @RequestBody 配合 XML 解析器
    • Servlet: 通过 request.getReader() 读取输入流

5. RESTful 路径参数 (Path Variables)

  • 请求方法: 任意方法
  • 格式: /resource/{id}
  • 示例: GET /users/123
  • 获取方式:
  • SpringBoot: @PathVariable
  • Servlet: 需要手动解析 URL

6. HTTP 头部参数 (Headers)

  • 位置: HTTP 头部
  • 示例:
Authorization: Bearer token123
Accept-Language: en-US
  • 获取方式:
  • SpringBoot: @RequestHeader
  • Servlet: request.getHeader()

7. Cookie 参数

  • 位置: HTTP Cookie 头部
  • 示例:
Cookie: sessionId=abc123; username=John
  • 获取方式:
  • SpringBoot: @CookieValue
  • Servlet: request.getCookies()

8. GraphQL 查询

  • 请求方法: POST/GET
  • Content-Type: application/json (通常)
  • 格式: GraphQL 查询语言
  • 示例:
{
  "query": "{ user(id: 123) { name age } }"
}
  • 获取方式: 需要专门的 GraphQL 处理器

9. WebSocket 参数

  • 协议: WebSocket
  • 格式: 自定义,通常为 JSON 或二进制
  • 获取方式: 通过 WebSocket API 处理

10. Server-Sent Events (SSE)

  • 协议: HTTP 长连接
  • Content-Type: text/event-stream
  • 格式: 特定的事件流格式
  • 获取方式: 通过专门的 SSE 客户端处理

总结表

提交方式典型 Content-Type主要用途SpringBoot 注解
URL 查询参数-GET 请求简单参数@RequestParam
表单数据application/x-www-form-urlencoded传统表单提交@RequestParam@ModelAttribute
多部分表单multipart/form-data文件上传@RequestPart
JSON 请求体application/jsonREST API 复杂数据@RequestBody
XML 请求体application/xml传统 XML 接口@RequestBody
路径参数-RESTful URL 设计@PathVariable
HTTP 头部-认证、语言偏好等@RequestHeader
Cookie-会话管理、用户追踪@CookieValue

到此这篇关于HTTP 与 SpringBoot 参数提交与接收协议方式的文章就介绍到这了,更多相关http与springboot参数提交内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你如何在 javadoc 输出<> 符号

    教你如何在 javadoc 输出<> 符号

    在 javadoc 输出 <> 两个符号,直接使用会提示错误,今天通过本文教大家如何在 javadoc 输出<> 符号,需要的朋友可以参考下
    2023-05-05
  • java地理坐标系及投影间转换代码示例

    java地理坐标系及投影间转换代码示例

    在地图投影中,经常需要将坐标从不同的坐标系之间进行转换,下面这篇文章主要给大家介绍了关于java地理坐标系及投影间转换的相关资料,需要的朋友可以参考下
    2024-08-08
  • 一篇文章带你理解Java Spring三级缓存和循环依赖

    一篇文章带你理解Java Spring三级缓存和循环依赖

    这篇文章主要介绍了浅谈Spring 解决循环依赖必须要三级缓存吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • java格式化date成字符串的详细方法和示例

    java格式化date成字符串的详细方法和示例

    在Java编程中,字符串格式化是一项基本且重要的技能,这篇文章主要介绍了java格式化date成字符串的详细方法和示例,文中通过代码 介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • SpringAOP中@Pointcut的用法详解

    SpringAOP中@Pointcut的用法详解

    这篇文章主要介绍了SpringAOP中@Pointcut的用法详解,Pointcut(切点)是面向切面编程中的一个非常重要的概念,此概念由spring框架定义,Pointcut只是一种筛选规则,需要的朋友可以参考下
    2023-08-08
  • java理论基础函数式接口特点示例解析

    java理论基础函数式接口特点示例解析

    这篇文章主要为大家介绍了java理论基础函数式接口特点示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java的DataInputStream和DataOutputStream数据输入输出流

    Java的DataInputStream和DataOutputStream数据输入输出流

    这里我们来看一下Java的DataInputStream和DataOutputStream数据输入输出流的使用示例,两个类分别继承于FilterInputStream和FilterOutputStream:
    2016-06-06
  • idea向System.getenv()添加系统环境变量的操作

    idea向System.getenv()添加系统环境变量的操作

    这篇文章主要介绍了idea向System.getenv()添加系统环境变量的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理方案

    MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理方案

    这篇文章主要介绍了MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理方案,分别介绍了两种占位符的区别,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • MyBatis拦截器原理探究

    MyBatis拦截器原理探究

    MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能.这篇文章主要介绍了MyBatis拦截器原理探究,需要的朋友可以参考下
    2018-02-02

最新评论