当前位置: 首页 > news >正文

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 对象

  • 示例:

    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-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/jsonREST API 复杂数据@RequestBody
XML 请求体application/xml传统 XML 接口@RequestBody
路径参数-RESTful URL 设计@PathVariable
HTTP 头部-认证、语言偏好等@RequestHeader
Cookie-会话管理、用户追踪@CookieValue
http://www.dtcms.com/a/298140.html

相关文章:

  • Orbbec开发---数据流与数据流操作
  • “即时零售”风起,E3+企业中台如何赋能品牌企业破局增长?
  • 单片机(STM32-ADC模数转换器)
  • 软件异常读写威胁硬盘安全:从过往案例到防护之道
  • 05.原型模式:从影分身术到细胞分裂的编程艺术
  • jQuery事件方法:bind、live、delegate、on对比
  • 秒收蜘蛛池解析机制的原理
  • Sulfo-CY3 Alkyne磺酸基Cy3-炔
  • 猛犸世纪接连登上《IT时报》《第一财经》,GEO优化走向AI营销主舞台
  • jwt 验证方法 (ASP.NET Core)
  • Android 15中的16KB大页有何优势?
  • 使用vllm创建相同模型的多个实例,使用nginx进行负载均衡,提高模型吞吐量
  • 浅谈数字花园
  • jenston nano+conda+pytorch的部署办法
  • 一次“非法指令”(SIGILL)问题的完整调试过程:CPU指令集兼容性探秘
  • Windows Server 2003 R2系统C盘扩容教程
  • 本地部署Dify教程
  • 软件工程之可行性研究:从理论到实践的全面解析
  • Tomcat线程池深度优化指南:高并发场景下的maxConnections计算与监控体系
  • 当人机交互迈向新纪元:脑机接口与AR/VR/MR的狂飙之路
  • 管理 GitHub Pages 站点的自定义域(Windows)
  • 【Web】DASCTF 2025上半年赛 wp
  • 牛客刷题记录01
  • 软件工程的工具链演进
  • Lua(数据库访问)
  • (CVPR 2025 )基于学习的自动HSI光谱校准方法
  • [CSS]让overflow不用按shift可以滚轮水平滚动(纯CSS)
  • 【氮化镓】GaN取代GaAs作为空间激光无线能量传输光伏转换器材料
  • SQL server 2019删除重建用户
  • Dify数据可视化-AntV Visualization Chart