HTTP 协议的常用方法有哪些?(GET、POST、PUT、DELETE、PATCH)各自的作用和区别是什么?

HTTP 协议定义了多种请求方法,用于指定客户端对服务器资源的操作。其中最常用的是 GETPOSTPUTDELETEPATCH,它们的作用和区别如下:

1. GET

  • 作用 :从服务器获取资源(只读操作),是最常用的方法。
  • 特点
    • 请求参数通常附加在 URL 后面(如 ?id=1&name=test),长度受浏览器/服务器限制(一般不超过 2048 字符)。
    • 无请求体(body),或不建议在 body 中携带数据(部分客户端支持,但不符合规范)。
    • 安全的 (不修改资源状态)和幂等的(多次执行结果相同)。
    • 可被缓存(如浏览器缓存、CDN 缓存),会被浏览器历史记录保存。
  • 典型场景:查询数据(如获取用户信息、搜索结果)。
  • 示例:GET /users/1(获取 ID 为 1 的用户)。

2. POST

  • 作用 :向服务器提交数据 ,通常用于创建新资源或触发非幂等操作。
  • 特点
    • 请求参数放在请求体(body)中,可传输大量数据(无明确长度限制),支持多种格式(如 JSON、FormData)。
    • 非安全的 (可能修改资源状态)和非幂等的(多次执行可能产生不同结果,如重复提交订单会创建多个订单)。
    • 默认不可缓存,不会被浏览器历史记录保存。
  • 典型场景:创建资源(如注册用户、提交表单、上传文件)、执行复杂操作(如支付)。
  • 示例:POST /users(请求体携带新用户信息,创建用户)。

3. PUT

  • 作用 :向服务器全量更新资源(若资源不存在,可能创建新资源,取决于服务器实现)。
  • 特点
    • 请求参数放在请求体中,需包含资源的完整数据(即使某些字段未修改)。
    • 非安全的 (会修改资源),但幂等的(多次执行结果相同,最终资源状态由请求体决定)。
    • 不可缓存。
  • 典型场景:全量更新资源(如修改用户的所有信息,包括姓名、年龄、邮箱等)。
  • 示例:PUT /users/1(请求体携带用户 ID=1 的完整信息,覆盖原有数据)。

4. DELETE

  • 作用删除服务器上的资源
  • 特点
    • 通常通过 URL 标识要删除的资源,请求体可选(一般不携带数据)。
    • 非安全的 (会删除资源),但幂等的(多次删除同一资源,最终结果相同:资源不存在)。
    • 不可缓存。
  • 典型场景:删除资源(如删除用户、订单)。
  • 示例:DELETE /users/1(删除 ID 为 1 的用户)。

5. PATCH

  • 作用 :向服务器部分更新资源(仅修改资源的部分字段)。
  • 特点
    • 请求体仅包含需要修改的字段(无需完整资源数据),比 PUT 更高效。
    • 非安全的 (会修改资源),但幂等的(多次执行相同的部分更新,结果相同)。
    • 不可缓存。
  • 典型场景:部分更新资源(如仅修改用户的邮箱,不改变姓名和年龄)。
  • 示例:PATCH /users/1(请求体为 {"email": "new@example.com"},仅更新邮箱)。

核心区别总结

方法 核心作用 数据位置 安全性(是否修改资源) 幂等性(多次执行结果是否相同) 缓存性 典型场景
GET 获取资源 URL 参数 安全(不修改) 幂等 可缓存 查询数据
POST 创建资源/提交数据 请求体 非安全(可能修改) 非幂等 不可缓存 注册、提交表单、支付
PUT 全量更新资源 请求体 非安全(修改) 幂等 不可缓存 全量修改用户信息
DELETE 删除资源 URL 标识 非安全(删除) 幂等 不可缓存 删除用户、订单
PATCH 部分更新资源 请求体(部分字段) 非安全(修改) 幂等 不可缓存 仅修改用户邮箱、手机号

补充说明

  • 安全性 :指是否改变服务器资源的状态(GET 是唯一安全的方法)。
  • 幂等性 :指多次执行相同请求后,服务器资源状态是否一致(GET/PUT/DELETE/PATCH 是幂等的,POST 通常非幂等)。
  • 实际开发中,部分场景可能灵活使用(如 POST 也可用于更新资源),但遵循规范能提高接口的可读性和一致性。
相关推荐
extrao1 天前
🚀 Kea DHCP4 自动分配系统完整搭建
网络协议
喵个咪2 天前
Go-Wind HTTP 服务器从入门到精通
后端·http·go
不做菜鸟的网工3 天前
BGP特性
网络协议
明月_清风5 天前
开发者网络概念全扫盲:一篇搞定
后端·网络协议
刘马想放假6 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
王二端茶倒水7 天前
一套可落地的无线运营方案,不能只管 AP,还要管用户、计费和运维
网络协议
162723816087 天前
EtherCAT 分布式时钟(DC)原理与配置实战:把多轴真正"对齐到同一时刻"
网络协议
王二端茶倒水7 天前
宽带无线项目,怎么从一次性交付变成长期运营收入?
网络协议
Goodbye7 天前
大模型无状态架构:从 HTTP 协议到 Harness AI 工程的深度解析
http