首页 > 其他分享 >get、post、put、delete、patch的区分

get、post、put、delete、patch的区分

时间:2023-11-10 17:26:21浏览次数:28  
标签:get PATCH PUT put 操作 POST patch 方法 DELETE

HTTP定义了与服务器不同的交互方法,常见的方法有4种,分别是 GET、POST、PUT、DELETE; 而 PATCH 是后来新增的方法。

相关基本概念

幂等

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。
这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,setTrue() 函数
就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现。

安全

指不管进行多少次操作,资源的状态都不会改变。 
该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据, 不会影响资源的内容,即该请求不会产生副作用。
无论进行多少次操作,结果都是一样的。

 

REST模式

GET

  • 安全、幂等
  • 用于信息获取

 

POST

  • 不安全、不幂等
  • 用于创建,当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。

 

PUT

  • 安全、幂等
  • 用于创建或更新(完整更新数据)。

该请求就像数据库的 update 操作一样, 用来修改完整的数据内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作, 其结果并没有不同。

 

DELETE

  • 安全、幂等
  • 删除资源

 

PATCH

  • 安全、非幂等
  • 对PUT的补充,一般用来对已知资源部分更新,是后来新出的标准。

HTTP 协议中, PUT 方法已经被用来表示对资源进行整体覆盖, 而 POST 方法则没有对标准的补丁格式的提供支持。不同于 PUT 方法,而与 POST 方法类似, PATCH 方法是非幂等的,这就意味着连续多个的相同请求会产生不同的效果。

要判断一台服务器是否支持 PATCH 方法,那么就看它是否将其添加到了响应首部 Allow 或者 Access-Control-Allow-Methods(在跨域访问的场合,CORS)的方法列表中 。

另外一个支持 PATCH 方法的隐含迹象是 Accept-Patch 首部的出现,这个首部明确了 服务器端可以接受的补丁文件的格式。

 

 

参考地址:POST,GET,PUT,DELETE,PATCH等方法,你有真正了解过吗?

标签:get,PATCH,PUT,put,操作,POST,patch,方法,DELETE
From: https://www.cnblogs.com/wanghaokun/p/17824564.html

相关文章

  • 关于Lambda表达式(箭头函数)的get属性访问器和常规的get属性访问器的差异
    如下代码示例所示d1d2相等,d3d4不等,因为赋值形式的访问器只是new一个实例后赋值,而lambda形式(箭头函数),则是把箭头右侧是当方法体来执行,即每次都new一个新的实例classDog{publicDog(){this.Name=Guid.NewGuid().ToString("N");......
  • 无涯教程-批处理 - Batch Files – Inputs函数
    运行批处理文件时,它使您可以选择传递命令行参数,然后可以在程序中读取它们以进行进一步处理,可以使用%运算符以及参数的数字位置从程序中调用批处理文件参数,以下是定义命令行参数的方式。%0是所调用的程序名称。%1是第一个命令行参数。%2是第二个命令行参数。等到%9。让无涯教程看......
  • 神经网络入门篇:详解计算一个神经网络的输出(Computing a Neural Network's output)
    一个神经网络的输出首先,回顾下只有一个隐藏层的简单两层神经网络结构:图1.3.1其中,\(x\)表示输入特征,\(a\)表示每个神经元的输出,\(W\)表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。神经网络的计算关于神经网络是怎......
  • js怎么实现对某个网址进行多线程get访问,实现压力测试效果
    在JavaScript中,实际上没有传统意义上的"多线程",但是我们可以使用WebWorkers来模拟多线程行为。WebWorkers允许您运行JavaScript操作在后台线程,不会影响主线程的性能。然而,WebWorkers更多用于在浏览器端执行耗时的计算任务,并不适用于执行HTTP请求。 对于Node.js环境,我们可以......
  • 【misc】[HNCTF 2022 Week1]python2 input(JAIL) --沙盒逃逸,python2环境
    查看附件,这次有点不太一样,这次是python2的环境只有一个input函数,但是python2的input函数可是不太一样:在python2中,input函数从标准输入接收输入,并且自动eval求值,返回求出来的值在python2中,raw_input函数从标准输入接收输入,并返回输入字符串在python3中,input函数从标准输入接收输......
  • vue broadcast和dispatch
    functionbroadcast(componentName,eventName,params){this.$children.forEach((child)=>{constname=child.$options.componentName;if(name===componentName){child.$emit(...[eventName].concat(params));}else{broadcast.appl......
  • Qt - QWidget::setGeometry()不生效问题解决方案
    开发过程中经常碰到setGeometry()不生效的问题,发现只要在setGeometry()之前调用一下show()或者setVisible(true)就可以了!问题就出在setVisible(true)!!!setVisible()会判断当前控件的WA_WState_Created属性,意思就是看看控件是否已经创建了window,如果为没有创建,就调用create()方......
  • getContextPath、getServletPath、getRequestURI的区别
    假定你的webapplication名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果: 1、System.out.println(request.getContextPath());//可返回站点的根路径。也就是项目的名字 打印结果:/news   2......
  • 配置Maven项目的pom.xml时遇到input contained no data问题
    1.问题2.解决我发现每次当我修改一些部分之后,就会遇到这个问题我遵循了他的建议重新排列标记属性,然后重新加载就解决了报错个人怀疑是修改后并没有识别之类的?......
  • 【转】Lspatch使用
    原文地址:Lspatch使用原文作者:yuito写在前面通过使用模块,Android用户可以轻松地增加新功能、修改现有功能或增强应用程序的性能。但是,使用模块修改一般需要超级用户权限,也就是所谓的ROOT权限。这极大限度的限制了用户对于模块的使用。好在,Lsposed框架的开发队伍开发了一款名为......