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

HTTP 请求方法与参数上传形式的关系

核心原则
请求方法决定数据存储位置(URL/请求体),上传形式决定数据编码方式。二者无强制绑定,但存在推荐组合。

请求方法与上传形式搭配

GET 方法

  • 仅支持 URL 参数(查询参数或路径参数)
  • 示例:GET /users?id=123GET /users/123
  • 限制:HTTP 规范禁止 GET 使用请求体传递数据

POST 方法

  • JSON:结构化数据(如 {"name":"张三"}
  • form-data:文件上传或混合数据(如表单+图片)
  • x-www-form-urlencoded:简单键值对(如 name=张三&age=20
  • 示例:文件上传用 POST /upload + Content-Type: multipart/form-data
  1. JSON(application/json):前后端分离项目的主流选择,请求体中放 JSON 字符串,例如 POST /users,请求体为 {"name":"张三","age":20}。👉 场景:传递结构化数据(如创建用户、提交复杂表单)。
  2. form-data(multipart/form-data):唯一支持 文件上传 的形式,同时可混合传递文本参数,例如 “提交用户资料 + 上传头像”。👉 场景:文件上传(图片、文档)、文本 + 二进制混合数据。
  3. x-www-form-urlencoded:传统表单提交的默认形式,请求体中数据以 key1=value1&key2=value2 编码,例如 POST /login,请求体为 username=zhangsan&password=123。👉 场景:简单键值对提交(如登录、注册表单,无文件)。
  4. URL 路径 / 查询参数:可配合使用,例如 POST /orders/123/pay?type=alipay123 是路径参数,type 是查询参数)。👉 场景:补充传递简单标识或条件(核心数据仍放请求体)。

PUT 方法

  • 与 POST 类似,侧重全量更新资源
  • 推荐 JSON 格式(如 PUT /users/123 + {"name":"李四"}

DELETE 方法

  • 通常用 URL 参数(路径或查询)
  • 示例:DELETE /users/123DELETE /users?id=123

默认上传形式场景

浏览器表单

  • 默认 x-www-form-urlencoded
  • 文件上传需显式设置 enctype="multipart/form-data"

API 调用(Axios/Fetch)

  • 默认 application/json
  • 需手动配置其他类型(如 headers: {"Content-Type": "..."}

工具(Postman)

  • GET:自动拼接 URL 查询参数
  • POST:默认 form-data,需切换其他类型

注意事项

  • GET + 请求体:违反规范,多数服务端不支持
  • DELETE + 请求体:虽协议允许,但实际较少使用
  • 文件上传:仅 multipart/form-data 支持二进制流

推荐组合表

方法语义推荐形式典型场景
GET查询URL 参数分页、搜索
POST创建/提交JSON/form-dataAPI 调用、文件上传
PUT全量更新JSON用户资料更新
DELETE删除URL 参数删除资源

更详细可参考:https://www.cnblogs.com/blogtech/p/18010147https://www.cnblogs.com/blogtech/p/18010147

http://www.dtcms.com/a/461226.html

相关文章:

  • 如何减少 Elasticsearch 集群中的分片数量
  • 当通过API发送请求的方式自动触发Jenkins job报错HTTP Status 403 – Forbidden的解决办法
  • 一个网站如何工作流程建立网站需要哪些手续
  • H3C网络设备 实验二:搭建两个局域网,使两个局域网相互通信(路由器,固定ip)
  • 临平房产做网站的公司wordpress屏蔽功能org
  • Skywalking 的本地开发配置
  • iOS 上架 App 全流程实战,应用打包、ipa 上传、App Store 审核与工具组合最佳实践
  • JavaScript核心构成与基础语法详解2
  • 邹平网站建设公司淘宝网站开始怎么做
  • fs 文件系统:Node.js 操作磁盘的 “万能工具”
  • Android + iOS 手机抓包 App 实操教程
  • 智慧新零售时代:施易德系统平衡技术与人力,赋能门店运营
  • 标准编码与算法
  • Python获取变量名本身​​——varname库
  • 专业站全返利网站建设
  • 网站设计提案安阳市建设工程领域网站
  • 鸿蒙(OpenHarmony)声明式 UI 开发入门:从「智慧校园」项目学基础语法
  • js移动开发框架
  • 【腾讯拥抱开源】Youtu-Embedding:基于CoDiEmb的一个协作而独特的框架,用于信息检索与语义文本相似性中的统一表征学习
  • 西蔵自治区建设厅网站wordpress防盗链插件
  • VSCode中使用conda activate 虚拟环境,没报错,但没进入环境
  • vue修改element-ui的默认的class
  • ModuleNotFoundError: No module named ‘UI_xiangmu‘
  • 网站建设方案及报价霍州做网站
  • mybatis-generator插件自动生成mapper及其实体模型配置
  • 计算机毕业设计 基于k-means的校园美食推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 【代码大模型-后门安全】Backdoors in Neural Models of Source Code
  • javaweb后端优雅处理枚举
  • 帝国cms小程序搞起来简直好用的不行
  • 高效批量调整图像尺寸的方案