当前位置: 首页 > news >正文

HTTP 四种常见方法

在 Web 开发中,我们每天都在和 HTTP 打交道。不论是访问网页、提交表单,还是操作 RESTful API,底层的通信都依赖 HTTP 协议。

HTTP(超文本传输协议,HyperText Transfer Protocol)是 Web 世界的基石,是浏览器和服务器之间通信的基础协议。HTTP 方法定义了客户端想要对服务器资源执行的操作。其中最核心的部分之一,就是请求方法(Request Method)

本文将详细介绍 HTTP 中最常用的四种请求方法:GETPOSTPUTDELETE,帮助你真正理解它们的用途、特点与区别。


一、什么是 HTTP 方法?

HTTP 方法是用来描述客户端希望对指定资源执行的哪种操作的一组标准指令。它们出现在 HTTP 请求报文的第一行:

最常见的操作包括:

  • 获取数据(GET)
  • 提交数据(POST)
  • 更新数据(PUT)
  • 删除数据(DELETE)

这四种方法在 RESTful 架构中尤为重要,它们分别对应着“增删改查”的常规操作。


二、GET 方法:获取资源

特点:

  • 用途:请求服务器上的资源(数据、页面、文件等)
  • 是否有请求体:不应有请求体(body)
  • 参数传递:通过 URL 查询参数(?key=value
  • 幂等性:幂等(调用多次不会造成资源变化)
  • 安全性:不会对服务器数据造成实质影响

示例:

GET /api/articles?id=10 HTTP/1.1
Host: example.com

浏览器场景:

  • 点击链接
  • 刷新页面
  • 获取用户信息:GET /users/123
  • 查询商品列表:GET /products?category=books

三、POST 方法:提交资源

特点:

  • 用途:创建新资源或提交数据(如表单数据、JSON、文件上传)
  • 参数传递:通常在请求体(body)中
  • 幂等性非幂等(每次请求都可能导致不同结果)
  • 安全性:可能会更改服务器状态(例如添加一条记录)

示例:

POST /api/comments HTTP/1.1
Host: example.com
Content-Type: application/json{"article_id": 10,"content": "Hello World !"
}

常见用法:

  • 用户注册 / 登录
  • 提交评论、订单
  • 上传文件

四、PUT 方法:更新资源

特点:

  • 用途完整地 更新已存在的资源,需提供完整资源内容
  • 参数传递:通常在请求体中
  • 幂等性:幂等(多次请求结果相同)
  • 安全性:修改服务器资源,有风险需谨慎使用
  • 注意事项:PUT 一般是对资源整体替换,部分更新建议用 PATCH 方法。

示例:

PUT /api/articles/10 HTTP/1.1
Content-Type: application/json{"title": "Updated Title","content": "Updated content."
}

五、DELETE 方法:删除资源

特点:

  • 用途:删除指定资源
  • 幂等性:幂等(即使资源不存在,重复执行也不会报错)
  • 安全性:直接删除数据,有不可逆性,需加权限控制

示例:

DELETE /api/articles/10 HTTP/1.1
Host: example.com

资源删除后通常返回状态码 204(No Content)


六、对比总结

方法用途参数位置幂等性安全性常见用途
GET获取资源URL查询数据、查看页面
POST创建资源请求体表单提交、上传数据
PUT更新资源请求体更新用户信息、配置等
DELETE删除资源URL / 体删除记录或资源

七、RESTful 风格中的应用

RESTful API 通常采用如下方式区分不同操作:

操作请求方式路径示例
查询列表GET/api/articles
查询单个GET/api/articles/10
新建数据POST/api/articles
修改数据PUT/api/articles/10
删除数据DELETE/api/articles/10

通过 HTTP 方法 + URL 的组合,我们可以清晰、语义化地表达各种操作。


八、注意事项

  1. 表单默认只支持 GET 和 POST

    • PUT 和 DELETE 通常通过 JavaScript(如 fetchaxios)实现。
    • Django、Laravel 等框架提供 method override 支持。
  2. 跨域问题(CORS)

    • PUT/DELETE 请求通常触发浏览器预检(OPTIONS 请求)
    • 需后端正确配置 Access-Control-Allow-Methods
  3. 幂等操作的理解

    • DELETE/PUT 是幂等的,但仍可能有副作用(如日志记录、积分扣除等)

理解 GET、POST、PUT、DELETE 的用途和区别,有助于更合理地设计和调用 API,编写语义清晰、结构清楚的接口,以及避免错误地使用请求方法,导致数据错乱或安全问题。

http://www.lryc.cn/news/587578.html

相关文章:

  • 【论文阅读】Thinkless: LLM Learns When to Think
  • ubuntu(22.04)系统上安装 MuJoCo
  • MFC UI控件CheckBox从专家到小白
  • 桶排序算法深度剖析
  • FastAPI + gRPC 全栈实践:Windows 开发到 Ubuntu 部署全指南
  • flink 和 spark 架构的对比
  • idea删除的文件怎么找回
  • IDEA中使用Servlet,tomcat输出中文乱码
  • JMeter 连接与配置 ClickHouse 数据库
  • 递推预处理floor(log_2{n})
  • 【脚本系列】如何使用 Python 脚本对同一文件夹中表头相同的 Excel 文件进行合并
  • uniapp video视频全屏播放后退出,页面字体变大,样式混乱问题
  • 基于Spring Boot的生活用品电商网站的设计与实现
  • 国内隧道IP代理技术解析:原理、优势与实战应用
  • 算法学习笔记:21.动态规划——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • linux 文件搜索与文件内容查看
  • Imx6ull用网线与电脑连接
  • 游戏玩法的专利博弈
  • 11、鸿蒙Harmony Next开发:列表布局 (List)
  • Spark 和 Hadoop MapReduce 的基本概念及区别
  • Spring Boot项目结构解析:构建高效、清晰的代码框架
  • UE5多人MOBA+GAS 22、创建技能图标UI,实现显示蓝耗,冷却,以及数字显示的倒数计时还有雷达显示的倒数计时
  • 【解决办法】越疆Dobot CR5 桌面客户端DobotStudio Pro连不上机器人
  • iOS高级开发工程师面试——Objective-C 语言特性
  • WPF的三轴机械手控件动画
  • MEMS IMU如何赋能无人机与机器人精准感知?
  • gitlab-ci.yml
  • 厘米级精准定位+低功耗通信,飞睿智能UWB技术赋能机器人高效作业
  • 触想CX-3588主板在安保巡检领域的落地实践:解锁机器人自主智能
  • LeetCode--45.跳跃游戏 II