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

Http协议

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

参考

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)
> {
>  
>      }
相关推荐
深圳启明云端科技5 分钟前
ESP-IDF HTTP POST请求发送音频-ESP32物联网方案
物联网·http·音视频
Cosmoshhhyyy11 分钟前
LeetCode:3083. 字符串及其反转中是否存在同一子字符串(哈希 Java)
java·leetcode·哈希算法
AI人H哥会Java25 分钟前
【Spring】基于XML的Spring容器配置——<bean>标签与属性解析
java·开发语言·spring boot·后端·架构
计算机学长felix28 分钟前
基于SpringBoot的“大学生社团活动平台”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·后端
sin220128 分钟前
springboot数据校验报错
spring boot·后端·python
开心工作室_kaic35 分钟前
springboot493基于java的美食信息推荐系统的设计与实现(论文+源码)_kaic
java·开发语言·美食
缺少动力的火车37 分钟前
Java前端基础—HTML
java·前端·html
loop lee44 分钟前
Redis - Token & JWT 概念解析及双token实现分布式session存储实战
java·redis
ThetaarSofVenice1 小时前
能省一点是一点 - 享元模式(Flyweight Pattern)
java·设计模式·享元模式