【前端】HTTP请求方式:GET、POST 与其他请求方法详解

【前端】HTTP请求方式:GET、POST 与其他请求方法详解


文章目录


前言

在前后端分离开发中,最常见的问题之一就是:

  • GET 和 POST 有什么区别?
  • PUT、DELETE、PATCH 是干什么的?
  • 为什么有的接口用 POST 不能用 GET?
  • 为什么有时候 GET 能成功,POST 却报错?

本文系统整理 HTTP 请求方式的区别、原理与使用场景,结合 Vue + Axios 实际开发说明。


定义概念 + 缩写

一、HTTP 是什么?

HTTP(HyperText Transfer Protocol)

超文本传输协议,是浏览器与服务器之间通信的规则。


二、常见请求方式

方法作用是否修改数据
GET获取数据
POST提交数据
PUT更新数据(整体替换)
PATCH局部更新
DELETE删除数据
HEAD只获取响应头
OPTIONS查询支持的请求方式

性质


一、GET 请求

特点

  • 用于获取数据
  • 参数放在 URL 中
  • 可被缓存
  • 幂等(多次请求结果相同)

示例

axios.get('/api/user/list',{params:{page:1,pageSize:10}})

生成的请求:

GET /api/user/list?page=1&pageSize=10 

适用场景

  • 查询列表
  • 查询详情
  • 查询分页数据

二、POST 请求

特点

  • 用于提交数据
  • 数据放在请求体(body)
  • 不会被浏览器缓存
  • 常用于创建资源

示例

axios.post('/api/user/login',{username:'admin',password:'123456'})

数据不会出现在 URL 中。


适用场景

  • 登录
  • 表单提交
  • 创建资源
  • 复杂查询条件

三、PUT 请求

特点

  • 用于更新资源
  • 通常是“整体替换”
  • 幂等

示例

axios.put('/api/user',{id:1,name:'张三',phone:'123456'})

四、PATCH 请求

特点

  • 局部更新
  • 只修改某个字段
axios.patch('/api/user/1',{phone:'999999'})

五、DELETE 请求

特点

  • 删除资源
  • 一般通过 id 删除
axios.delete('/api/user',{params:{id:1}})

六、GET 与 POST 核心区别总结

对比项GETPOST
参数位置URLBody
安全性较低较高
数据长度有限制基本无限制
是否缓存
是否幂等
用途查询提交

使用步骤


一、在 Axios 中的标准写法

统一写法(推荐)

axios({method:'post',url:'/api/user/login',data:{username:'admin',password:'123456'}})

二、什么时候用 GET?

✔ 查询
✔ 不修改服务器数据
✔ 参数简单

例如:

GET/admin/category/page?page=1&pageSize=10

三、什么时候用 POST?

✔ 登录
✔ 提交表单
✔ 创建数据
✔ 查询条件复杂

例如:

POST/admin/employee/login 

四、为什么不能乱用 GET?

如果用 GET 做登录:

GET /login?username=admin&password=123456 

密码会暴露在浏览器地址栏:

  • 不安全
  • 会被浏览器记录
  • 会被代理服务器记录

所以登录必须用 POST。


五、RESTful 设计规范建议

操作方法
查询列表GET
查询单个GET
新增POST
修改PUT
局部修改PATCH
删除DELETE

总结

  1. GET 用于查询,不修改数据
  2. POST 用于提交,修改服务器数据
  3. PUT 是整体更新
  4. PATCH 是局部更新
  5. DELETE 是删除
  6. GET 参数在 URL,POST 参数在 body
  7. 登录、密码、敏感数据一定用 POST

一句话总结:

GET 是“看”,POST 是“改”

参考文献

[1] HTTP/1.1 协议规范
[2] Axios 官方文档

在这里插入图片描述


在这里插入图片描述

Read more

医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(八)

医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(八)

5.4 性能测试与结果分析 为了评估GoEHRStream的性能,我们设计测试模拟真实的医院数据流场景,并测量关键指标。 5.4.1 实验环境 * 硬件: * CPU: Intel Xeon E-2288G (8 cores, 16 threads) * RAM: 32 GB DDR4 * Storage: 512 GB NVMe SSD (用于GoEHRStream和BadgerDB) * Network: 1 Gbps Ethernet * 软件: * OS: Ubuntu 20.04 LTS * Go: 1.19 * GoEHRStream: 配置见下文。 * 数据源模拟器: 使用Go编写的程序,模拟多个HIS系统并发发送FHIR Observation事件(生命体征)和HL7

By Ne0inhk
SpringBoot结合PostGIS在省级旅游口号管理中的应用实践

SpringBoot结合PostGIS在省级旅游口号管理中的应用实践

目录 前言 一、数据库存储设计 1、一些需要考虑的点 2、物理表设计及表结构 二、SpringBoot后端设计 1、模型层实现 2、业务层实现 3、控制层实现 三、前端界面及成果展示 1、前端界面实现 2、旅游口号列表界面 3、旅游口号新增、编辑 四、总结 前言         随着信息技术的飞速发展,旅游业作为全球经济增长的重要引擎之一,正经历着前所未有的数字化转型。旅游口号作为吸引游客、传播地方文化的重要手段,其管理和检索的效率直接关系到旅游营销的成功与否。在大数据时代背景下,如何高效地存储、管理和检索海量的省级旅游口号数据,成为旅游信息化建设的关键问题之一。这是上篇博文介绍了省级旅游口号相似性评估的下一篇。         本实践旨在探索SpringBoot与PostGIS在省级旅游口号管理中的应用,通过构建一个基于SpringBoot和PostGIS的省级旅游口号存储及检索系统,实现对旅游口号的高效存储、精准检索和便捷管理。在系统设计过程中,我们充分考虑了系统的可扩展性、数据的安全性和查询的高效性。通过SpringBoot的依赖注入和自

By Ne0inhk
【MYSQL】MYSQL学习的一大重点:MYSQL表的操作

【MYSQL】MYSQL学习的一大重点:MYSQL表的操作

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 0 ~> 概要 * 1 ~> 创建表 * 2 ~> 创建表的案例详解 * 3 ~> 查看表结构 * 4 ~> 修改表 * 4.1 什么时候需要修改表 * 4.2 修改方式 * 4.3 案例 * 4.3.1 在users表添加二条记录 * 4.

By Ne0inhk
SHCTF 3rd - [WEB]部分writeup

SHCTF 3rd - [WEB]部分writeup

SHCTF-[WEB]部分writeup * 法律与道德使用声明 * 比赛地址 * [阶段1] ez-ping * 靶机展示 * payload * 源码过滤+getshell * [阶段2] Mini Blog * 靶机展示 * 简单信息收集 * 攻击思路 * PAYLOAD * get flag * [阶段3] 你也懂java? * 靶机展示 * 网页源码 * Note.jar * 攻击思路 * 创建恶意类 * 设置JDK环境 * 编译恶意类 * 修改恶意类尝试得到flag * 利用 python 直接发payload * 更加偷懒的方法 * [阶段2] Go * 靶机展示 * 过waf+get flag * [阶段1] 上古遗迹档案馆 * 靶机展示 * SQL注入 * [阶段1] kill_king * 靶机展示 * 攻击思路

By Ne0inhk