当前位置: 首页 > 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.lryc.cn/news/600144.html

相关文章:

  • [MMU]TLB Miss 后的 Hardware Table Walk及优化
  • AI与区块链融合:2025年的技术革命与投资机遇
  • c语言-数据结构-沿顺相同树解决对称二叉树问题的两种思路
  • Web前端:JavaScript Math内置对象
  • ABP VNext + OData:实现可查询的 REST API
  • MyBatis-Plus极速开发指南
  • Springboot3.0 集成 RocketMQ5
  • 理解Spring中的IoC
  • 数字增加变化到目标数值动画,js实现
  • 2025年-ClickHouse 高性能实时分析数据库(大纲版)
  • cha的操作
  • 最新Amos 29下载及详细安装教程,附免激活中文版Amos安装包
  • Nature Communications:复杂光下多维视觉信息处理,利用时间演变的环境极化敏感神经突触器件
  • 基于Docker的GPU版本飞桨PaddleOCR部署深度指南(国内镜像)2025年7月底测试好用:从理论到实践的完整技术方案
  • JavaScript 中 let 在循环中的作用域机制解析
  • 【深度学习新浪潮】Claude code是什么样的一款产品?
  • swiper.js实现名录上下滚动
  • Python 条件分支与循环详解--python004
  • 【Agent】API Reference Manual(API 参考手册)
  • 【Spring AI详解】开启Java生态的智能应用开发新时代(附不同功能的Spring AI实战项目)
  • 手写A2C(FrozenLake环境)
  • 牛客刷题记录01
  • 【C++】二叉搜索数
  • 流式接口,断点续传解决方案及实现
  • QKV 为什么是三个矩阵?注意力为何要除以 √d?多头注意力到底有啥用?
  • 【PyTorch】图像多分类项目
  • jwt 在net9.0中做身份认证
  • qt框架,使用webEngine如何调试前端
  • 开发笔记 | 优化对话管理器脚本与对话语音的实现
  • 13.使用C连接mysql