【网络协议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
  • 具有幂等性

示例


// 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)
> {
>  
>      }
上一篇:微信小程序的tabbar怎么配置


下一篇:IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战