http的请求方法,get、post、put、patch、delete

182 阅读2分钟

HTTP 定义了多种请求方法(HTTP Methods),用于表示客户端对服务器资源的不同操作。以下是常见的 HTTP 请求方法及其用途和特点:


1. 核心方法(常用)

方法作用幂等性安全性请求体支持
GET获取资源(查询数据),参数通过URL传递(params)。幂等安全❌ 不支持
POST提交数据(创建/更新资源),参数通过请求体传递(data)。不幂等不安全✅ 支持
PUT替换整个资源(全量更新),需提交完整的资源数据。幂等不安全✅ 支持
PATCH部分更新资源(增量更新),只需提交需修改的字段。不幂等不安全✅ 支持
DELETE删除资源幂等不安全❌ 可选

2. 其他方法(辅助或特殊用途)

方法作用
HEAD类似GET,但只返回响应头(不返回响应体),用于检查资源是否存在或获取元数据。
OPTIONS获取服务器支持的HTTP方法或跨域请求(CORS)的预检请求(Preflight)。
TRACE回显客户端的请求(用于诊断),实际开发中极少使用。
CONNECT建立与服务器的隧道(用于代理服务器和HTTPS连接)。

关键概念解释

  1. 幂等性(Idempotent)
    多次执行同一请求的效果与一次执行相同(如:GETPUTDELETE是幂等的,POSTPATCH不是)。

  2. 安全性(Safe)
    方法不会修改服务器资源(如:GETHEAD是安全的,POSTPUTDELETE不是)。

  3. 请求体支持
    GETHEAD通常不携带请求体,但某些实现可能允许(非标准行为)。


使用场景示例

  1. GET

    // 获取用户列表
    axios.get('/users', { params: { page: 1 } });
    
  2. POST

    // 创建新用户
    axios.post('/users', { name: 'John', age: 25 });
    
  3. PUT

    // 全量更新用户ID为1的数据(需提交所有字段)
    axios.put('/users/1', { name: 'John', age: 26 });
    
  4. PATCH

    // 仅更新用户ID为1的年龄
    axios.patch('/users/1', { age: 26 });
    
  5. DELETE

    // 删除用户ID为1的数据
    axios.delete('/users/1');
    

RESTful API 设计原则

在 REST 架构中,HTTP 方法通常与资源操作对应:

  • GET → 查询
  • POST → 创建
  • PUT → 全量更新
  • PATCH → 部分更新
  • DELETE → 删除

注意事项

  1. 幂等性与重试
    幂等方法(如PUTDELETE)在网络超时时可安全重试;非幂等方法(如POST)需谨慎处理。

  2. 兼容性
    部分旧系统可能仅支持GETPOST,需通过参数(如_method)模拟其他方法。

  3. 浏览器限制
    HTML 表单仅原生支持GETPOST,其他方法需通过 JavaScript(如AJAX)实现。