| 方法 | 分类 | 幂等 | 安全 | 说明 |
|---|
填写下面的参数,即时生成可直接粘贴到终端执行的 cURL 命令。所有内容都在浏览器本地计算,不会上传任何数据。
请求方法是 HTTP 协议中最基础的概念之一:它告诉服务器「我想对这个资源做什么」。RFC 9110 定义了 9 个核心方法,此外 WebDAV、版本控制、缓存代理、设备发现等扩展协议又各自定义了大量专用方法。
本表收录了 57 个请求方法*,按来源分成 7 类,并为每个方法标注了两个关键属性:**是否幂等**与*是否安全。
这两个词是理解 HTTP 方法设计的钥匙,很多人分不清,但它们的含义其实非常明确。
安全(Safe)* 指这个方法*不会修改服务器上的资源状态。GET、HEAD、OPTIONS、TRACE 是安全的——反复调用它们,服务器上的数据不会因此改变。
幂等(Idempotent)* 指这个方法*执行一次和执行多次的效果相同。注意它不要求「不修改」,只要求「修改的结果一致」。
| 方法 | 安全 | 幂等 | 说明 |
|---|---|---|---|
| GET | 是 | 是 | 只读取,不修改 |
| HEAD | 是 | 是 | 只读响应头 |
| OPTIONS | 是 | 是 | 查询支持的方法 |
| PUT | 否 | 是 | 整体替换,重复执行结果相同 |
| DELETE | 否 | 是 | 删除后资源已不存在,再删仍是这个结果 |
| POST | 否 | 否 | 重复提交会创建多份资源 |
| PATCH | 否 | 否 | 补丁语义决定,标准上不保证幂等 |
为什么这个区分很重要? 因为浏览器、爬虫和中间代理会依据它做决策。安全的 GET 可以被预取、被缓存、被重试;而 POST 一旦网络超时,客户端不能盲目重试,否则可能重复下单、重复扣款。
WebDAV 系列(PROPFIND、PROPPATCH、MKCOL、COPY、MOVE、LOCK、UNLOCK 等)用于远程文件管理,网盘同步、在线 Office 协作、macOS Finder 挂载服务器都依赖它们。用 curl -X PROPFIND 就能直接列出支持 WebDAV 的目录。
DeltaV 系列(REPORT、CHECKOUT、CHECKIN、MERGE 等)是 WebDAV 的版本控制扩展,把「检出—修改—检入」的模型搬到了 HTTP 上。
缓存清理方法(PURGE、BAN、REFRESH)是 Varnish、Squid 等反向代理的私有扩展。PURGE 按 URL 精确清理,BAN 按条件批量失效,是运维刷新 CDN 缓存的常用手段。
设备发现方法(M-SEARCH、NOTIFY、SUBSCRIBE、UNSUBSCRIBE)来自 SSDP 与 UPnP,DLNA 投屏、智能家居设备发现都走这套协议。
不确定某个接口支持哪些方法时,直接发一个 OPTIONS 请求即可:
OPTIONS /api/users HTTP/1.1
Host: example.com
服务器会在 Allow 响应头里列出全部支持的方法:
Allow: GET, POST, PUT, DELETE, OPTIONS
这也是 CORS 预检请求的工作方式——浏览器对跨域的复杂请求会先自动发一个 OPTIONS,确认服务端允许该来源与该方法后,才发送真实请求。
PUT、WebDAV、幂等;提示:生成器会识别 GET、HEAD、OPTIONS、TRACE 这几个不允许携带请求体的方法,自动忽略你填写的请求体,避免生成无效命令。
页面上的 cURL 生成器怎么用?
CONNECT 方法的作用是什么?
TRACE 方法为什么通常被禁用?
PURGE 和 BAN 是什么方法?
WebDAV 方法用在什么场景?
CORS 预检请求是怎么回事?
OPTIONS 方法有什么用?
POST 为什么不能随便重试?
PUT 和 PATCH 有什么不同?
安全方法和幂等方法有什么区别?
什么是幂等方法?
HTTP 一共有多少个请求方法?