news 2026/8/26 6:07:13

HTTP 方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HTTP 方法

RESTful API 中的 HTTP 方法详解

在 RESTful API 设计中,HTTP 方法(HTTP Verbs)是表达对资源操作意图的核心方式。不同的 HTTP 方法对应不同的语义,正确使用它们能让 API 更清晰、可预测和符合 REST 原则。

1. 核心 HTTP 方法及其在 REST 中的对应(CRUD 操作)
HTTP 方法对应 CRUD 操作主要用途是否安全(Safe)是否幂等(Idempotent)典型状态码(成功时)
GETRead获取资源(单个或集合)是(不修改资源)200 OK
POSTCreate创建新资源201 Created
PUTUpdate(替换)替换(全量更新)指定资源200 OK 或 201 Created
PATCHUpdate(部分)部分更新指定资源(只修改提供的字段)否(取决于实现)200 OK 或 204 No Content
DELETEDelete删除指定资源200 OK 或 204 No Content
2. 每个方法的详细说明与使用规范
  1. GET

    • 用于读取资源,不应产生副作用(不修改服务器状态)。
    • 支持查询参数(Query Parameters)进行过滤、分页、排序等。
    • 示例:
      • GET /users→ 获取用户列表
      • GET /users/123→ 获取 ID 为 123 的用户
      • GET /articles?tag=rest&limit=20&page=2→ 分页查询带标签的文章
    • 注意:GET 请求应可缓存,长度有限制(通常 < 2048 字符)。
  2. POST

    • 用于创建新资源,或执行非幂等的复杂操作(如触发流程)。
    • 请求体(Body)携带新资源数据。
    • 示例:
      • POST /users→ 创建新用户,返回 201 + Location 头部指向新资源 URI
      • POST /orders/123/pay→ (不推荐)触发支付(更推荐用资源方式设计)
    • 注意:多次相同 POST 会创建多个资源(非幂等)。
  3. PUT

    • 用于全量替换资源:如果资源不存在则创建(有时称为“upsert”),如果存在则完全替换。
    • 客户端必须提供资源的完整表示(缺失字段通常会被置为 null 或默认值)。
    • 示例:
      • PUT /users/123→ 用请求体完全替换 ID 为 123 的用户
    • 注意:多次相同 PUT 结果相同(幂等)。
  4. PATCH

    • 用于部分更新资源:只修改请求体中提供的字段,其他字段保持不变。
    • 常见格式:JSON Patch(RFC 6902)、JSON Merge Patch(RFC 7396)或自定义对象。
    • 示例:
      • PATCH /users/123→ Body:{ "name": "新名字" }只改名字
    • 注意:幂等性取决于实现(JSON Merge Patch 是幂等的,某些自定义方式不是)。
  5. DELETE

    • 用于删除资源。
    • 通常不需要请求体,可选返回被删除的资源表示。
    • 示例:
      • DELETE /users/123→ 删除 ID 为 123 的用户
    • 注意:多次相同 DELETE 结果相同(幂等),可返回 204 No Content。
3. 其他不常用但有用的 HTTP 方法
方法用途RESTful 中常见场景
HEAD与 GET 相同,但只返回头部(无响应体)检查资源是否存在、获取元信息(如 Last-Modified)
OPTIONS获取资源支持的 HTTP 方法CORS 预检请求、API 文档发现
TRACE回显请求(用于调试)很少使用,通常禁用以防安全风险
4. 安全(Safe)与幂等(Idempotent)的含义
  • 安全方法:不会改变服务器状态(只读)。只有GETHEAD是安全的。
  • 幂等方法:多次执行效果与一次相同。GET、PUT、DELETE、HEAD、OPTIONS是幂等的,POST 和 PATCH通常不是(PATCH 取决于具体实现)。

幂等性对网络重试、缓存、负载均衡非常重要。

5. 实际案例对比

假设资源是用户(/users/123):

操作推荐 HTTP 请求不推荐(RPC 风格)
获取用户信息GET /users/123POST /getUser
创建用户POST /usersGET /createUser
更新用户姓名PATCH /users/123{ “name”: “张三” }POST /updateUserName
完全替换用户信息PUT /users/123(完整用户对象)POST /replaceUser
删除用户DELETE /users/123POST /deleteUser
6. 总结口诀

“查用 GET,增用 POST,全改 PUT,部分 PATCH,删用 DELETE”

正确使用 HTTP 方法是设计优秀 RESTful API 的基础,它能让你的接口更直观、更易维护,也更符合业界标准。如果你想看具体代码示例(如 Express、Spring Boot 中的路由定义)或其他进阶话题(如批量操作如何选择方法),随时告诉我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 4:19:22

Qwen图像编辑极速方案:新手也能轻松掌握的AI创作神器

想要快速生成高质量AI图像却苦于技术门槛太高&#xff1f;Qwen Image Edit-Rapid-AIO正是为你量身打造的极速创作解决方案&#xff01;这个开源项目将复杂的AI图像生成技术封装成简单易用的工具&#xff0c;让每个人都能轻松体验从文字到图像的魔法转换。&#x1f3a8; 【免费下…

作者头像 李华
网站建设 2026/8/16 4:17:44

Adobe Downloader完整指南:如何一键获取Adobe全家桶软件

还在为Adobe官网复杂的下载流程而烦恼吗&#xff1f;Adobe Downloader这款macOS专属工具将彻底改变你的下载体验&#xff01;作为完全开源的项目&#xff0c;它能让你一键获取所有Adobe软件&#xff0c;包括最新的测试版本&#xff0c;无需订阅登录就能享受高速下载。无论你是设…

作者头像 李华
网站建设 2026/8/25 9:12:42

完美滚动条终极指南:打造极致用户体验的完整教程

完美滚动条终极指南&#xff1a;打造极致用户体验的完整教程 【免费下载链接】TW-Elements 项目地址: https://gitcode.com/gh_mirrors/twe/TW-Elements 完美滚动条&#xff08;Perfect Scrollbar&#xff09;是一个专为现代网页设计打造的轻量级JavaScript插件&#x…

作者头像 李华
网站建设 2026/8/25 7:48:12

Simulink三相四桥臂逆变器闭环控制仿真探秘

三相四桥臂逆变器闭环控制仿真&#xff0c;LC型滤波器&#xff0c;电阻负载。 在0.1s和0.2s分别进行满载和半载的切换&#xff0c;闭环效果稳定。 matlab/simulink环境 ~今天&#xff0c;我尝试在Simulink中搭建了一个三相四桥臂逆变器的闭环控制仿真模型&#xff0c;主要研究在…

作者头像 李华
网站建设 2026/8/25 10:40:34

Agent-S智能体性能深度解密:从参数调优到业务实战

你是否曾经遇到过这样的困境&#xff1a;精心设计的AI智能体在实际业务中表现时好时坏&#xff0c;有时候响应迅速、结果准确&#xff0c;有时候却"思维混乱"、效率低下&#xff1f;这背后往往隐藏着一个关键因素——温度参数的微妙平衡。今天&#xff0c;让我们一同…

作者头像 李华
网站建设 2026/8/19 13:10:30

Gitee崛起:中国开发者为何正在集体转向本土代码托管平台?

Gitee崛起&#xff1a;中国开发者为何正在集体转向本土代码托管平台&#xff1f; 在全球开源生态中&#xff0c;GitHub长期占据主导地位&#xff0c;但近年来一个显著变化正在中国开发者社区发生。随着国产代码托管平台Gitee的快速成长&#xff0c;越来越多的国内开发者开始将目…

作者头像 李华