欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > HTTP 协议里15种请求方法及示例

HTTP 协议里15种请求方法及示例

2025/6/15 18:44:55 来源:https://blog.csdn.net/zheng15ddi/article/details/148315393  浏览:    关键词:HTTP 协议里15种请求方法及示例

一、HTTP请求方法概述

HTTP(HyperText Transfer Protocol)是互联网上应用最广泛的协议之一,定义了客户端与服务器之间的通信规则。根据HTTP标准,不同的请求方法(Request Methods)用于执行不同的操作。

HTTP请求方法(HTTP Request Methods)并不属于某一种特定的编程语言(如 JavaScript、Python 或 Java),而是 HTTP协议(Hypertext Transfer Protocol)的一部分,属于网络通信标准,适用于所有基于HTTP的客户端-服务器交互。

1. HTTP请求方法属于什么?

  • 协议层:HTTP(超文本传输协议),是Web通信的基础标准,由 IETF(互联网工程任务组)定义。
  • 与编程语言的关系
    • 任何支持HTTP请求的编程语言(如 JavaScript、Python、Java、PHP、Go 等)都可以使用这些方法。
    • 前端(如JavaScript)通过 fetchXMLHttpRequestaxios 发送HTTP请求。
    • 后端(如Node.js、Python Flask、Java Spring)接收并处理这些请求。

2. 不同语言中如何使用HTTP方法?

(1)JavaScript(前端)
// GET 请求
fetch("https://api.example.com/data", { method: "GET" });// POST 请求
fetch("https://api.example.com/users", {method: "POST",body: JSON.stringify({ name: "John" }),
});// PUT 请求
fetch("https://api.example.com/data/123", {method: "PUT",body: JSON.stringify({ title: "Updated Data" }),
});
(2)Python(后端,如 Flask)
from flask import Flask, requestapp = Flask(__name__)@app.route("/data", methods=["GET"])
def get_data():return "This is a GET request"@app.route("/data", methods=["POST"])
def post_data():data = request.jsonreturn f"Received POST data: {data}"
(3)Java(后端,如 Spring Boot)
@RestController
public class ApiController {@GetMapping("/data")  // GETpublic String getData() {return "GET request";}@PostMapping("/data")  // POSTpublic String postData(@RequestBody String data) {return "Received: " + data;}
}
(4)命令行(如 curl
# GET
curl -X GET https://api.example.com/data# POST
curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' https://api.example.com/users

3. 总结

分类说明
协议层HTTP请求方法属于 HTTP协议,与编程语言无关。
前端使用JavaScript(fetch/axios)、浏览器(地址栏默认GET,表单默认POST)。
后端使用任何后端语言(Node.js、Python、Java、PHP等)均可处理这些方法。
工具使用curl、Postman、浏览器开发者工具等均可发送不同HTTP方法的请求。

结论
HTTP请求方法不是JavaScript或其他语言的特性,而是 Web通信的通用标准,所有支持HTTP的编程语言和工具都可以使用它们。

  • HTTP/1.0 定义了3种基本方法:GETPOSTHEAD
  • HTTP/1.1 新增了5种方法:OPTIONSPUTDELETETRACECONNECT
  • 其他方法(如PATCHMOVECOPY等)由扩展标准(如WebDAV)引入。

二、HTTP请求方法对照表

以下是15种HTTP请求方法的详细说明及示例:

序号方法描述示例备注
1GET请求指定资源,返回实体主体(通常用于读取数据)。GET /products/123 HTTP/1.1参数在URL中传递,可被缓存,不应有副作用(如修改数据)。
2HEAD与GET相同,但仅返回响应头(无响应体),用于检查资源状态。HEAD /products/123 HTTP/1.1常用于预检请求(如检查文件大小或最后修改时间)。
3POST向服务器提交数据(如表单、文件),可能导致资源创建或修改。POST /users HTTP/1.1
{"name": "John"}
数据在请求体中,无长度限制,适用于非幂等操作(如创建订单)。
4PUT替换目标资源的全部内容(全量更新)。PUT /products/123 HTTP/1.1
{"name": "New Name"}
幂等方法(多次调用结果相同),若资源不存在可能创建新资源。
5DELETE请求删除指定资源。DELETE /products/123 HTTP/1.1服务器可能返回204 No Content404 Not Found
6CONNECT建立与目标资源的隧道(如HTTPS代理)。CONNECT example.com:443 HTTP/1.1主要用于SSL代理,客户端与服务器直接通信。
7OPTIONS获取服务器支持的HTTP方法或跨域预检(CORS)。OPTIONS /products/123 HTTP/1.1响应头包含Allow: GET, POST, PUT等支持的方法。
8TRACE回显客户端请求,用于测试或诊断(可能暴露敏感信息)。TRACE / HTTP/1.1默认禁用(防止XST攻击),需服务器显式启用。
9PATCH对资源进行部分修改(与PUT的全量更新区别)。PATCH /products/123 HTTP/1.1
{"price": 199}
非幂等方法(依赖补丁内容),适用于增量更新。
10MOVE请求服务器将资源移动到新URI(类似文件剪切)。MOVE /old-path HTTP/1.1
Destination: /new-path
WebDAV扩展方法,需服务器支持。
11COPY请求服务器复制资源到新URI(类似文件复制)。COPY /source-file HTTP/1.1
Destination: /target-file
WebDAV扩展方法,需服务器支持。
12LINK建立资源间的关联(如超链接)。LINK /article/123 HTTP/1.1
Link: </tags/tech>; rel="tag"
极少使用,WebDAV扩展的一部分。
13UNLINK断开资源间的关联。UNLINK /article/123 HTTP/1.1
Link: </tags/tech>; rel="tag"
极少使用,WebDAV扩展的一部分。
14WRAPPED发送封装请求(如加密或压缩的请求体)。WRAPPED /api HTTP/1.1
Content-Type: application/wrapped-json
非标准方法,依赖服务器实现。
15Extension-method自定义方法(需服务器支持)。PURGE /cache HTTP/1.1如CDN专用方法PURGE用于清除缓存。

三、HTTP方法详细解释与示例

1. GET

描述:请求指定的资源,通常只用于数据读取,不应有副作用(如修改数据)。
示例

GET /products/123 HTTP/1.1  
Host: example.com  

备注:参数通过URL传递(如/products?id=123),有长度限制,且会被浏览器缓存。

2. HEAD

描述:与GET相同,但服务器只返回响应头(无响应体),用于检查资源是否存在或获取元数据。
示例

HEAD /products/123 HTTP/1.1  
Host: example.com  

备注:常用于预检请求,节省带宽(如检查文件大小或最后修改时间)。

3. POST

描述:向服务器提交数据(如表单、文件),可能导致资源创建或修改。
示例

POST /users HTTP/1.1  
Host: example.com  
Content-Type: application/json  
{"name":"John", "email":"john@example.com"}  

备注:数据在请求体中,安全性高于GET(参数不可见),无长度限制。

4. PUT

描述:替换目标资源的全部内容(全量更新),需提供完整资源数据。
示例

PUT /products/123 HTTP/1.1  
Host: example.com  
Content-Type: application/json  
{"id":123, "name":"New Product", "price":99}  

备注:幂等方法(多次调用结果相同),若资源不存在可能创建新资源。

5. DELETE

描述:请求删除指定资源。
示例

DELETE /products/123 HTTP/1.1  
Host: example.com  

备注:实际删除行为由服务器决定(可能返回状态码204 No Content404 Not Found)。

6. CONNECT

描述:建立与目标资源的隧道(如HTTPS代理)。
示例

CONNECT example.com:443 HTTP/1.1  
Host: example.com  

备注:主要用于SSL隧道,客户端与服务器之间直接通信。

7. OPTIONS

描述:获取服务器支持的HTTP方法或跨域预检(CORS)。
示例

OPTIONS /products/123 HTTP/1.1  
Host: example.com  
Origin: https://foo.example  

备注:响应头包含Allow: GET, POST, OPTIONS等支持的方法。

8. TRACE

描述:回显客户端请求,用于诊断(可能暴露敏感信息)。
示例

TRACE / HTTP/1.1  
Host: example.com  

备注:默认禁用(防止XST攻击),需服务器显式启用。

9. PATCH

描述:对资源部分修改(与PUT的全量更新区别)。
示例

PATCH /products/123 HTTP/1.1  
Host: example.com  
Content-Type: application/json  
{"price":199}  

备注:非幂等方法(依赖补丁内容),需用Content-Type: application/json-patch+json等格式。

10. MOVE

描述:移动资源到新URI(类似文件系统剪切)。
示例

MOVE /old-path HTTP/1.1  
Host: example.com  
Destination: /new-path  

备注:需配合Destination头,实际由WebDAV扩展实现。

11. COPY

描述:复制资源到新URI(类似文件系统复制)。
示例

COPY /source-file HTTP/1.1  
Host: example.com  
Destination: /target-file  

备注:WebDAV扩展方法,需服务器支持。

12. LINK / 13. UNLINK

描述:建立或断开资源间的关联(如超链接)。
示例

LINK /article/123 HTTP/1.1  
Host: example.com  
Link: </tags/tech>; rel="tag"  

备注:极少使用,WebDAV扩展的一部分。

14. WRAPPED

描述:发送封装请求(如加密或压缩的请求体)。
示例

WRAPPED /api HTTP/1.1  
Host: example.com  
Content-Type: application/wrapped-json  
[Encrypted Data]  

备注:非标准方法,依赖服务器实现。

15. Extension-method

描述:自定义方法(需服务器明确支持)。
示例

PURGE /cache HTTP/1.1  
Host: example.com  

备注:如PURGE(清除缓存)是某些CDN的私有方法。

四、HTTP方法分类与最佳实践

1. 按安全性分类

  • 安全方法(Safe Methods)GETHEADOPTIONS(不应修改服务器数据)。
  • 非安全方法POSTPUTDELETE等(可能修改数据)。

2. 按幂等性分类

  • 幂等方法(Idempotent Methods)GETPUTDELETEHEAD(多次调用结果相同)。
  • 非幂等方法POSTPATCH(多次调用可能产生不同结果)。

3. 最佳实践

  • RESTful API设计
    • 使用GET读取数据,POST创建资源,PUT全量更新,PATCH部分更新,DELETE删除资源。
    • 避免滥用GET传递敏感数据(参数在URL中可见)。
  • 缓存优化
    • GETHEAD可被缓存,POST通常不缓存。
  • 跨域请求(CORS)
    • 复杂请求(如POST带自定义头)会先发送OPTIONS预检请求。

五、总结

HTTP请求方法是客户端与服务器交互的核心,不同的方法对应不同的操作语义。合理选择方法能提升API的规范性、安全性和可维护性。

典型场景推荐方法示例
读取数据GETGET /api/products
创建资源POSTPOST /api/users
全量更新资源PUTPUT /api/products/123
部分更新资源PATCHPATCH /api/products/123
删除资源DELETEDELETE /api/products/123
检查服务器支持方法OPTIONSOPTIONS /api/products

掌握这些方法的使用场景,能帮助开发者构建更高效、安全的Web应用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词