关注

HTTP的请求方式到底有多少种?

谢谢点点关注
实际上HTTP协议的请求方法远比我们平时使用的要多得多。让我为你详细梳理一下:

一、HTTP标准方法详解

1.1 RFC 7231定义的9种核心方法

# 主要的HTTP方法及其语义
GET /api/users/123 HTTP/1.1
POST /api/users HTTP/1.1
PUT /api/users/123 HTTP/1.1
DELETE /api/users/123 HTTP/1.1
HEAD
HEAD /api/users/123 HTTP/1.1
OPTIONS /api/users/123 HTTP/1.1
TRACE /api/users/123 HTTP/1.1
CONNECT proxy.example.com:8080 HTTP/1.1
PATCH /api/users/123 HTTP/1.1
🔹 GET
  • 用途:检索资源
  • 特点:安全、幂等、可缓存
  • 请求体:通常无
  • 响应体:有
curl -X GET https://api.example.com/users/123
🔹 POST
  • 用途:创建资源或提交数据
  • 特点:不安全、不幂等
  • 示例场景:注册用户、上传文件、提交表单
🔹 PUT
  • 用途:完整更新资源
  • 特点:不安全、幂等
  • 示例
{
   
   
"id": 123,
"name": "张三",
"email": "[email protected]"
}
🔹 DELETE
  • 用途:删除资源
  • 特点:不安全、幂等
  • 示例DELETE /articles/456
🔹 HEAD
  • 用途:获取响应头(无响应体)
  • 典型用例:检查资源是否存在、获取资源更新时间

1.2 不常用但重要的方法

🔸 OPTIONS
// 预检请求示例
fetch('/api/data', {
   
   
method: 'POST',
headers: {
   
   'Content-Type': 'application/json'},
body: JSON.stringify({
   
   data: 'test'})
});
// 浏览器会自动发送:
// OPTIONS /api/data
// Access-Control-Request-Method: POST
🔸 PATCH
// 局部更新,只需发送变化的字段
PATCH /users/123
{
   
   "email": "[email protected]"}
🔸 TRACE

用于诊断,回显接收到的请求(存在安全隐患,现代浏览器常禁用)

🔸 CONNECT

用于建立隧道连接,主要在代理场景中使用

二、完整清单:HTTP方法的大家族

2.1 标准化方法汇总表

方法 RFC 安全性 幂等性 主流浏览器支持
GET 7231
POST 7231
PUT 7231
DELETE 7231
HEAD 7231
OPTIONS 7231
TRACE 7231 ⚠️受限
CONNECT 7231
PATCH 5789

2.2 WebDAV扩展方法

PROPFIND /webdav/ HTTP/1.1
PRO
PROPPATCH /webdav/ HTTP/1.1
MKCOL /webdav/new-folder/ HTTP/1.1
COPY /source.txt HTTP/1.1
Destination: /dest.txt
MOVE /old-name.txt HTTP/1.1
Destination: /new-name.txt
LOCK /document.txt HTTP/1.1
UNLOCK /document.txt HTTP/1.1

WebDAV方法详情:

方法 用途 类似操作
PROPFIND 获取资源属性 类似GET+元数据
PROPPATCH 修改资源属性 类似PATCH
MKCOL 创建集合(目录) 类似mkdir
COPY 复制资源 cp
MOVE 移动/重命名资源 mv
LOCK 锁定资源 文件锁
UNLOCK 解锁资源 释放锁

三、实际编程中的使用方法

3.1 Java中使用各种HTTP方法

import cn.hutool.http.HttpRequest;
import cn.hutool.http.Method;

public class AllHttpMethodsExample {
   
   

public void demonstrateAllMethods() {
   
   
String baseUrl = "https://api.example.com/resources/123";

// 1. GET - 获取资源
String getResult = HttpRequest.get(baseUrl).execute().body();

// 2. POST - 创建资源
String postResult = HttpRequest.post(baseUrl)
.body("{\"name\":\"new resource\"}")
.execute().body();

// 3. PUT - 完整更新
String putResult 

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/Lisonseekpan/article/details/155543133

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--