> 技术文档 > HTTP 与 SpringBoot 参数提交与接收协议方式

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

  • 示例:

      
  • 获取方式:

    • SpringBoot: @RequestParam 或 @ModelAttribute

    • Servlet: request.getParameter()

3. JSON 请求体 (JSON Payload)

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

  • Content-Type: application/json

  • 格式: 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 文档

  • 示例:

     John 30
  • 获取方式:

    • 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 token123Accept-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-Typeapplication/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/json REST API 复杂数据 @RequestBody XML 请求体 application/xml 传统 XML 接口 @RequestBody 路径参数 - RESTful URL 设计 @PathVariable HTTP 头部 - 认证、语言偏好等 @RequestHeader Cookie - 会话管理、用户追踪 @CookieValue

游戏攻略