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: 用于文件上传,包含边界分隔符

  • 示例:

     
    1. <form action="/submit" method="post" enctype="application/x-www-form-urlencoded">
    2. <input name="username" value="John">
    3. <input type="submit">
    4. </form>
     
    html
     
  • 获取方式:

    • SpringBoot: @RequestParam 或 @ModelAttribute

    • Servlet: request.getParameter()

3. JSON 请求体 (JSON Payload)

  • 请求方法: POST/PUT/PATCH/DELETE

  • Content-Type: application/json

  • 格式: JSON 对象

  • 示例:

    json

     
    1. {
    2. "name": "John",
    3. "age": 30
    4. }
     
    html
     
  • 获取方式:

    • SpringBoot: @RequestBody

    • Servlet: 通过 request.getReader() 读取输入流

4. XML 请求体 (XML Payload)

  • 请求方法: POST/PUT/PATCH/DELETE

  • Content-Type: application/xml 或 text/xml

  • 格式: XML 文档

  • 示例:

     
    1. <user>
    2. <name>John</name>
    3. <age>30</age>
    4. </user>
     
    html
     
  • 获取方式:

    • SpringBoot: @RequestBody 配合 XML 解析器

    • Servlet: 通过 request.getReader() 读取输入流

5. RESTful 路径参数 (Path Variables)

  • 请求方法: 任意方法

  • 格式: /resource/{id}

  • 示例: GET /users/123

  • 获取方式:

    • SpringBoot: @PathVariable

    • Servlet: 需要手动解析 URL

6. HTTP 头部参数 (Headers)

  • 位置: HTTP 头部

  • 示例:

     
    1. Authorization: Bearer token123
    2. Accept-Language: en-US
     
    html
     
  • 获取方式:

    • SpringBoot: @RequestHeader

    • Servlet: request.getHeader()

7. Cookie 参数

  • 位置: HTTP Cookie 头部

  • 示例:

    Cookie: sessionId=abc123; username=John
    html
     
  • 获取方式:

    • SpringBoot: @CookieValue

    • Servlet: request.getCookies()

8. GraphQL 查询

  • 请求方法: POST/GET

  • Content-Typeapplication/json (通常)

  • 格式: GraphQL 查询语言

  • 示例:

     
    1. {
    2. "query": "{ user(id: 123) { name age } }"
    3. }
     
    html
     
  • 获取方式: 需要专门的 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/json REST API 复杂数据 @RequestBody
XML 请求体 application/xml 传统 XML 接口 @RequestBody
路径参数 - RESTful URL 设计 @PathVariable
HTTP 头部 - 认证、语言偏好等 @RequestHeader
Cookie - 会话管理、用户追踪 @CookieValue
posted @ 2026-05-06 14:51  charyGao  阅读(11)  评论(0)    收藏  举报