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

HTTP 请求报文 方法

HTTP 请求报文 中,方法(Method) 是用来说明客户端希望对服务器资源执行的操作。它出现在 HTTP 报文的第一行,称为 请求行,格式如下:

METHOD  Request-URI  HTTP-Version

例如:

GET /index.html HTTP/1.1

✅ 常见 HTTP 方法详解

方法名含义是否有请求体是否幂等常见用途
GET获取资源✅ 是浏览网页、获取数据
POST提交资源(如表单)✅ 是❌ 否登录、注册、上传数据
PUT更新资源(整体替换)✅ 是✅ 是修改整个用户信息等
DELETE删除资源否(可选体)✅ 是删除记录、数据等
HEAD获取响应头,不返回内容体✅ 是检查资源是否存在
OPTIONS询问支持的方法✅ 是CORS 预检、功能探测
PATCH局部更新资源✅ 是✅ 有争议(大多数认为是)局部修改用户资料等
TRACE回显请求报文✅ 是调试用,不常见
CONNECT用于建立隧道(如 HTTPS)❌ 否HTTPS代理

幂等(Idempotent)


✅ 一句话定义:

幂等操作:无论执行一次还是执行多次,其对系统的最终影响是一样的。


🎯 通俗解释

你可以把“幂等”理解为:

  • “我重复点多少次这个按钮,最终结果都一样。”

🔍 方法详解

1. GET

  • 用途:获取资源。

  • 特点

    • 参数通过 URL 传递(?key=value)
    • 不应产生副作用(不修改资源)
    • 不能带请求体

2. POST

  • 用途:向服务器提交数据。

  • 特点

    • 请求体中包含数据(如表单、JSON)
    • 常用于登录、注册、上传
    • 不幂等,连续发送多次会产生多次影响

3. PUT

  • 用途:更新(替换)指定资源。

  • 特点

    • 是幂等的:多次调用效果一样
    • 请求体中包含完整的新资源
    • 常用于 REST API 中修改资源

4. DELETE

  • 用途:删除资源。

  • 特点

    • 通常是幂等的:删除一次和多次一样
    • 不一定有请求体

5. HEAD

  • 与 GET 类似,但不返回响应体,只返回响应头。

  • 常用于:

    • 测试资源是否存在
    • 检查资源是否被修改(配合 ETag

6. OPTIONS

  • 查看服务器允许的 HTTP 方法。
  • 用于跨域请求的预检请求(preflight)

返回响应头如:

Allow: GET, POST, OPTIONS

7. PATCH

  • 与 PUT 不同,它是部分更新资源。
  • 用于只修改一个字段或局部数据。
  • 示例:只更新用户名,而不提交整个用户对象。

🚨 幂等性说明

  • 幂等:调用一次与多次效果一致(无副作用)
  • 非幂等:多次调用可能产生不同影响
方法幂等性
GET✅ 幂等
PUT✅ 幂等
DELETE✅ 幂等
POST❌ 非幂等
PATCH✅ 通常认为是

🧾 示例:完整 HTTP 请求报文

POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 38{"username": "admin","password": "123456"
}

如你还想看某个方法的具体交互过程(如 OPTIONS 的跨域示例、PATCH 的 JSON格式)或使用工具如 curlPostman 测试,我可以继续讲解。需要吗?

http://www.xdnf.cn/news/1034227.html

相关文章:

  • 湖北理元理律师事务所债务优化实务:平衡还款与生活的法律路径
  • 2022mpsPTE岗位笔试题
  • 自动化立体仓库堆垛机控制系统STEP7 FC1功能块 读取位置值SSI接口
  • KJY0047-J1阶段测试
  • 模拟 AJAX 提交 form 表单及请求头设置详解
  • 人工智能学习24-BP激活函数
  • 全球化2.0|云轴科技ZStack联合Teleplex举办技术沙龙 · 吉隆坡站
  • Oracle 单实例双IP配置
  • Qt:Qt桌面程序正常退出注意事项
  • 人工智能学习16-Numpy
  • YOLOv2 训练过程详解:从数据到模型落地的全流程解析
  • 设计模式-创建型模式(详解)
  • 11_13小结
  • 每天一个前端小知识 Day 1
  • 迁移数据库服务器和应用服务器步骤
  • Vue3中v-bind=“$attrs“应用实例
  • 最小费用最大流算法
  • 架构下的最终瓶颈:数据库如何破局?
  • ARDM:一款国产跨平台的Redis管理工具
  • React项目常用目录结构
  • 细节致胜:如何重塑反向海淘用户体验
  • MongoDB 事务有哪些限制和注意事项?
  • 系统学习·PHP语言
  • sqli-labs靶场46-53关(综合)
  • c 语言如何将 uint8_t *tg_pFrames的数据给 uint8_t **ppJpg
  • YOLO11中的C3K2模块
  • AORSA关键文件及参数解释
  • Go语言---闭包
  • golang字符串拼接
  • 【MFC 突然被问到,怎么实现一个星星按钮】原来问的是继承xs