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