【网络协议Http】Http中get,post,put,delete区别

server/2024/10/19 18:15:05/
http://www.w3.org/2000/svg" style="display: none;">

Http协议

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

https://img-blog.csdnimg.cn/direct/4290b0904ae04dc6b302e9185d5646dc.png" alt="在这里插入图片描述" />

【参考】

GET && POST 对比

关于tcp数据包:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
实际上get会产生一个tcp数据包,post会产生两个数据,这就会造成响应时间问题,但并不是所有的浏览器都是post发两次包,firefox不是。

GET 为获取数据
  • 请求参数在url上体现,能看到—不安全
  • 相当于数据库中的SELECT操作。

发送 数据 POST && PUT

put和post都是向服务器端发送数据,但put是幂等的,而post是非幂等。

所谓幂等,即多次发送同一个请求时候,产生的结果是一样的就是幂等性原则,这是为了当网络出现延迟等,服务器(客户端)之间发送请求没有收到回应,再重新发一次,实际上另一端已经接收到了第一次的请求,接着有接收第二次同一请求。如果是交易的业务没有幂等就会造成交易两次却只结算一次交易额。

POST 为提交数据
  • 向服务器发送数据。
  • 该请求,相当于INSERT操作。用于新增数据。
    post用于提交表单或创建新资源
  • 安全性。比 GET 更安全。数据都是放在RequestBody
  • 数据量无上限。
PUT 为提交数据
  • 也是向服务器发送消息
  • 该请求像数据库中的UPDATE操作,用来修改数据;
    (多次请求,最新一次会把上一次的请求数据覆盖)
    put用于向服务器上传或更新资源

DELETE

就是删除某行,就像DELETE操作

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping 的区别

RESTFUL风格接口,常用的URL请求方式就包括了GET、POST、PUT、DELETE等

@RequestMaping

@RequestMaping主要是将HTTP请求映射到控制器方法上,用于接收HTTP请求。因此,@GetMapping其实写法就是@RequestMapping(method = RequestMethod.GET)

@GetMapping

  • 用来获取数据;
  • 类似 select
  • 具有幂等性

@PostMapping

  • 用来提交请求数据(表单)
  • 类似 insert
  • 需要考虑接口幂等性问题 ???

@PutMapping

  • 用来修改数据
  • -类似 update
  • 本身就具有幂等性

@DeleteMapping

  • 用来删除数据
  • 类似于数据库中的delete
  • 具有幂等性

示例

java">
// insert
> @PostMapping(value = "/add") 
> public void add(@RequestBody User user) {
> 
>     }
> 
> // delete
> @DeleteMapping(value = "/delete/{id}")
>  public void delete(@PathVariable String id) {
>    
>      }
> 
> // update
> @PutMapping(value = "/update") 
> public void update(@RequestBody User user) {
>   
>     }
> 
> // select
> @GetMapping(value = "/get") 
> public User get(@RequestParam String name)
> {
>  
>      }

http://www.ppmy.cn/server/45071.html

相关文章

扎气球最高分-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第74讲。 扎气球最高分&…

【MySQL精通之路】SQL语句(7)-数据库管理语句(3)-表维护语句

目录 1.ANALYZE TABLE语句 1.1 输出 1.2 KEY分布分析 1.3 直方图统计分析 2.CHECK TABLE语句 2.1 输出 2.2 检查版本兼容性 2.3 检查数据一致性 2.4 InnoDB表的CHECK TABLE的使用说明 2.5 MyISAM表的CHECK TABLE使用说明 3.CHECKSUM TABLE语句 3.1 性能注意事项 4…

分享一个用AI降本的思路,不懂代码也能上手

如何用AI解决实际的业务问题? 生财圈友我来利用ChatGPT做算法建模,每年为公司省下6万元。 今天他将分享通过ChatGPT进行数据分析的思路,从最开始定义问题到最终数据论证。 上手的实操过程门槛并不高,但可以实现把官方电商平台的…

地质考察AR远程交互展示系统辅助老师日常授课

广东这片充满活力的土地,孕育了一家引领ARVR科技潮流的杰出企业——深圳华锐视点,作为一家专注于VR/AR技术研究与业务开发的先锋公司。多年来,我们不断突破技术壁垒,将AR增强现实技术与各行各业的实际需求完美结合,助力…

认识K8s集群的声明式资源管理方法

前言 Kubernetes 集群的声明式资源管理方法是当今云原生领域中的核心概念之一,使得容器化应用程序的部署和管理变得更加高效和可靠。本文将认识了解 Kubernetes 中声明式管理的相关理念、实际应用以及优势。 目录 一、管理方法介绍 1. 概述 2. 语法格式 2.1 管…

c#点击listview控件获取内容

构造函数添加: 点击事件: (listview控件确保有内容,比如已查询到数据添加到了listview) if (listView_data_base.Items.Count > 0){listView_data_base.FullRowSelect true;listView_data_base.Items[listView_da…

Debug-013-el-loading中显示倒计时时间

前言: 今天实现一个小小的优化,业务上是后端需要从设备上拿数据,所以前端需要不断调用一个查询接口,直到后端数据获取完毕,前后端根据一个ending字段为true判断停止调用查询接口。由于这个查询时间比较久&…

项目日记(3) boost搜索引擎

目录 1. 准备工作 2. 搜索初始化 3. 搜索部分 4. 对content部分处理 5. 服务器编写 前言: 上次在项目日记(2)写了index索引, 这次就可以进行search搜索了. 不多说快看. 先点个一键三联. 蟹蟹!!! 1. 准备工作 后面需要倒排索引的结构体, 先准备好. words是后面一个文档里面…