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 也可用于更新资源),但遵循规范能提高接口的可读性和一致性。
相关推荐
念越33 分钟前
UDP 与 TCP 协议详解
网络协议·tcp/ip·udp·tcp
路由侠内网穿透.38 分钟前
本地部署静态网站托管平台 Netlify 并实现外部访问(Windows 版本)
网络·网络协议
akarinnnn44 分钟前
深入理解内存函数:原理、应用与优化
c语言·网络·数据结构·算法
Patrick_Wilson44 分钟前
CLI 工具突然变慢了?别急着怀疑网络,按这四步排查
网络协议·性能优化·命令行
咖喱o1 小时前
VRRP
运维·网络·智能路由器
AI云原生1 小时前
容器网络模型与服务发现:从踩坑到精通,Kubernetes 网络问题排查全指南
服务器·网络·云原生·容器·kubernetes·云计算·服务发现
AI科技星1 小时前
基于平行素数对等腰梯形网格拓扑的完备性证明哥德巴赫猜想1+1
c语言·开发语言·网络·量子计算·agi
长谷深风1111 小时前
HTTP请求全过程解析【个人八股】
网络·网络协议·http·多线程下载·tcp 连接·请求报文、响应报文·网络请求流程
xhbh6661 小时前
MC端口映射完全教程:路由器虚拟服务器配置+防火墙放行+内网穿透备用方案
运维·服务器·网络·网络协议·tcp/ip·智能路由器·流量端口转发
code monkey.1 小时前
【Linux之旅】Linux 网络基础全解析:从协议分层到 Socket 编程,构建高性能网络服务的底层基石
linux·网络·php