首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >HTTP 协议的常用方法有哪些?(GET、POST、PUT、DELETE、PATCH)各自的作用和区别是什么?

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

原创
作者头像
搜罗万相
发布于 2025-10-25 11:31:58
发布于 2025-10-25 11:31:58
3.9K0
举报
文章被收录于专栏:Java开发Java开发

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

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​​ 也可用于更新资源),但遵循规范能提高接口的可读性和一致性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 1. GET
  • 2. POST
  • 3. PUT
  • 4. DELETE
  • 5. PATCH
  • 核心区别总结
  • 补充说明
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档