精华内容
下载资源
问答
  • 1、GET请求会向数据库发索取数据...2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次P...

    1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。

    2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。

    3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。

    4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

    就像前面所讲的一样,既然PUT和POST操作都是向服务器端发送数据的,那么两者有什么区别呢。。。POST主要作用在一个集合资源之上的(url),而PUT主要作用在一个具体资源之上的(url/xxx),通俗一下讲就是,如URL可以在客户端确定,那么可使用PUT,否则用POST。

    综上所述,我们可理解为以下:

    1、POST    /url      创建  
    2、DELETE  /url/xxx  删除  
    3、PUT     /url/xxx  更新4、GET     /url/xxx  查看

    以15言TopicAPI为例,我们就会对各请求一目了然:

    0b174c025d26b04f444d39b1207008a8.png

    使用post请求创建主题

    d9acc330c83ae37d4d2b1fe7f7859f9b.png

    使用put请求修改主题

    7321add642a2de03db5e98fe013f0fb7.png

    使用GET请求获取内容

    f979e5451750a57c0aee3726df3fc559.png

    获取的内容展示

    129f736ec1e31a47e874366033a6ed78.png

    使用DELETE请求删除主题

    展开全文
  • 本文将从基本概念、两者之间的区别以及几个常见问题来进行介绍,首先我们先来明确几个概念基本概念HTTP定义了与服务器进行交互的不同方法,常见的有四种:GETPOSTPUTDELETE。其中,GETPOST最常用。GET用来...

    03d6a12c32852b43bd00f71acbb5ffd9.png

    同样还是面试被问到的问题,经过这两天的复盘,发现之前对其的了解只是冰山一角,这两天也学到了不少新的知识,不得不说面试的确能帮我们弥补一些不足。本文将从基本概念、两者之间的区别以及几个常见问题来进行介绍,首先我们先来明确几个概念

    基本概念

    HTTP定义了与服务器进行交互的不同方法,常见的有四种:GETPOSTPUTDELETE。其中,GETPOST最常用。

    GET用来获取资源,它只是获取、查询数据,不会修改服务器的数据,从这点来讲,它是安全的(后面还会从另一方面分析它的不安全性)。由于它是读取的,因此可以对GET请求的数据进行缓存。

    POST则是可以向服务器发送修改请求,进行数据的修改的。举个例子:比如说我们要在知乎、或者论坛下面评论,这个时候就需要用到POST请求。但是它不能缓存,为什么呢?设想如果我们将“评论成功”的页面缓存在本地,那么当我发送一个请求的时候,直接返回本地的“评论成功”页面,而服务器端则什么也没有做,根本没有进行评论的更新,岂不是难以想象。

    区别

    我们常说的一些区别都是一些表面上的,比如:GET没有POST安全、GET请求时URL的长度是有限制的、GET没有bodyPOSTbody等等。这些都是针对浏览器中的要求, 在使用HTTP作为接口进行传输时,就没有这么多条条框框了,此时GETPOST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议, 无论GET还是POST,用的都是同一个传输层协议,所以在传输上没有区别。

    因此,在用作为接口进行传输时,最大的不同就在于报文格式上的不同了

    POST /url HTTP/1.1 rn
    GET /url HTTP/1.1 rn

    上面所示的分别为POST方法请求的报文第一行和GET请求的报文第一行, 显而易见的区别就是方法名不同。除此以外,就没有那么多要求了,GET也可以有bodyPOST也不一定非要使用body,只要客户端和服务器端确定好规范即可,至于形式则你们随意。只不过现在已经习惯了现有的规则,再去改变有些麻烦,毕竟客户端和服务器端要花时间去探讨具体的对接形式。

    由于平时大部分见到的都是基于浏览器的请求,下面我们再看几个常见的问题

    1. 我们前面说,无论是GET请求还是POST请求,其本质都是不安全的,为什么这样说呢?如果仅仅从GET请求的参数在地址栏是可见的,POST是不可见的,那就太肤浅了。 由于HTTP自己本身是一个明文协议,每个HTTP请求和返回的数据在网络上都是明文传播,无论是urlheader还是body。 只要在网络节点捉包,就能获取完整的数据报文,要防止泄密的唯一手段就是使用HTTPS(用SSL协议协商出的密钥加密明文HTTP数据)。
    2. 为什么在浏览器中GET请求方式的url长度有限制呢?这是因为浏览器要对url进行解析,而解析的时候就要分配内存。对于一个字节流的解析,必须分配buffer来保存所有要存储的数据。而url这种东西必须当作一个整体看待,无法一块一块处理,于是就处理一个请求时必须分配一整块足够大的内存。如果url太长,而并发又很高,就容易挤爆服务器的内存。
    3. POST是发送两个请求吗? 上面提到POST请求可以被分为“请求头”和“请求体”两个部分,那这两部分是一起发送出去呢?还是先发“请求头”,再发“请求体”呢? 在HTTP协议中并没有明确说明POST会产生两个数据包。之所以会发两个数据包,则是出于以下考虑:如果服务器先收到“请求头”,则会对其进行校验,如果校验通过,则回复客户端“100 - Continue”,客户端再把”请求体“发给服务器。如果请求被拒了,服务器就回复个400之类的错误,这个交互就终止了。这样做的优点是可以避免浪费带宽传输请求体,但是代价就是会多一次Round Trip。如果刚好请求体的数据也不多,那么一次性全部发给服务器可能反而更好。所以说,这和POST完全没有关系,只是基于两端的一种优化手段罢了。
    展开全文
  • 注:POSTGET,有什么区别? 我相信这个问题,大多同志在面试的时候都遇到过,那它们之间到底有什么区别呢?我最近也是刚接触了这个问题,所以我就通过总结也让自己能够更多的学到东西,能够让自己的基础知识更牢固...

    b63e2d80112a8d4a1e6816b8238c9c92.png

    注:POST和GET,有什么区别?

    我相信这个问题,大多同志在面试的时候都遇到过,那它们之间到底有什么区别呢?我最近也是刚接触了这个问题,所以我就通过总结也让自己能够更多的学到东西,能够让自己的基础知识更牢固吧。

    首先,既然讲到区别,我就先讲下好多同志对它的错误认识以及看法,看看你在不在其中。

    一丶对post与get区别的错误理解
    • 错误一:get安全性非常低,post安全性较高

    这个看法,其实在我没深入接触它们之前也是这么认识的,但是现在通过学习,才发现我是大错特错。

    你们以为的get不安全,是因为在地址栏能看见自己所提交的数据?而post却看不见,所以post比get安全? no no no 这样想你就大错特错了,来看图!!

    get方法提交数据,下图。

    699f1cb898a9a2edeb32d9cd3ac246b0.png

    好像确实是啊,自己提交的信息名字什么的都在地址栏,那么你再看一下下图的POST提交数据。

    post方法提交数据

    7c34d10dc660bcc60d13cd4dc81791ec.png

    有没有发现它写的更详细呢?哈哈?还给你排个版!!!确实,相比之下,post方法提交的数据一般人不会发现,所以GET确实差了那么一丢丢。

    然而,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文,要想安全传输,就只有加密,也就是 HTTPS

    那么现在第一个错误基本可以确定了吧!!!!

    错误二:get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

    这个理解看上去写的很像真话,我都差点信了,但事实是这样的吗?no no no!!!!!!

    下面我们看看w3cschool怎么说。

    9226386f53b3341660c1a28b8e7f07ce.png

    从图上对比来看好像确实是那么回事儿,但事实却不是那样。

    注:HTTP 协议没有 Body 和 URL 的长度限制,对 URL 限制的大多是浏览器和服务器的原因。

    浏览器原因就不说了,服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构造长 URL 来攻击)考虑,会给 URL 长度加限制。(我认为这应该是正确的理解,哈哈哈)

    所以,我感觉误区比较大的地方就是这两个地方,所以还是希望以后多加注意,我们都一样,不能随便信某度上的答案,要多查查资料。。。坑!!!

    二丶get和post的区别

    就说一下我自己了解的,不了解的我也不敢多说,我会慢慢补上来的!!!!借图说话,哈哈。

    1. get是获取数据的,而post是提交数据的。

    只是它们的语义不同而已,各有各的,就好比汤勺就是喝汤用的,当然你用它炒菜也是可以的,只是有点别扭,而且是不是有点二二的感觉,哈哈哈。

    注:HTTP请求,最初设定了八种方法。这八种方法本质上没有任何区别。只是让请求,更加有语义而已。

    • OPTIONS 返回服务器所支持的请求方法
    • GET 向服务器获取指定资源
    • HEAD 与GET一致,只不过响应体不返回,只返回响应头
    • POST 向服务器提交数据,数据放在请求体里
    • PUT 与POST相似,只是具有幂等特性,一般用于更新
    • DELETE 删除服务器指定资源
    • TRACE 回显服务器端收到的请求,测试的时候会用到这个
    • CONNECT 预留,暂无使用

    2.GET 用于获取信息,是无副作用的,是幂等的,且可缓存, 而POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存。

    我知道的,确定的暂时这么多,当然还有关于GET和POST的TCP连接的问题,我不敢确定所以不敢瞎说,待我理解深入后,再来补上一补。

    还有更多的区别,我会一一确认然后慢慢补来!!!关于它们谁更安全啊?有没有限制啊?在上面的误区中已经写过了,就不写了。

    当然,GET和POST本质上并没有什么区别,GET和POST是就是HTTP协议中的两种发送请求的方法。

    HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

    HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

    虽然写的东西不多,但也算是给自己一个小小的总结吧,如果有发现不对的地方,欢迎指出问题,本同志定会虚心接受~~~ 哈哈,好了,没了!

    — END —

    展开全文
  • Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOSTPUTDELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GETPOSTPUTDELETE就...

    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

    1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

    (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。

    * 注意:这里安全的含义仅仅是指是非修改信息。

    (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等这个概念:

    幂等(idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。

    幂等有一下几种定义:

    对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有abs(a)=abs(abs(a))。

    对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂等,即max(x,x) = x。

    看完上述解释后,应该可以理解GET幂等的含义了。

    但在实际应用中,以上2条规定并没有这么严格。引用别人文章的例子:比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。

    2.根据HTTP规范,POST表示可能修改变服务器上的资源的请求。继续引用上面的例子:还是新闻以网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。

    上面大概说了一下HTTP规范中GET和POST的一些原理性的问题。但在实际的做的时候,很多人却没有按照HTTP规范去做,导致这个问题的原因有很多,比如说:

    1.很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点。

    2.对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。

    3.另外一个是,早期的Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计,所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法。

    * 简单解释一下MVC:MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

    以上3点典型地描述了老一套的风格(没有严格遵守HTTP规范),随着架构的发展,现在出现REST(Representational State Transfer),一套支持HTTP规范的新风格,这里不多说了,可以参考《RESTful Web Services》。

    说完原理性的问题,我们再从表面现像上面看看GET和POST的区别:

    1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

    POST把提交的数据则放置在是HTTP包的包体中。

    2."GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,IIS4中最大为80KB,IIS5中为100KB"??!

    以上这句是我从其他文章转过来的,其实这样说是错误的,不准确的:

    (1).首先是"GET方式提交的数据最多只能是1024字节",因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。

    注意这是限制是整个URL长度,而不仅仅是你的参数值数据长度。[见参考资料5]

    (2).理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

    对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。

    由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制。我们还需要注意:

    1).IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。

    2).IIS 6.0默认上传文件的最大大小是4MB。

    3).IIS 6.0默认最大请求头是16KB。

    IIS 6.0之前没有这些限制。[见参考资料5]

    所以上面的80K,100K可能只是默认值而已(注:关于IIS4和IIS5的参数,我还没有确认),但肯定是可以自己设置的。由于每个版本的IIS对这些参数的默认值都不一样,具体请参考相关的IIS配置文档。

    3.在ASP中,服务端获取GET请求参数用Request.QueryString,获取POST请求参数用Request.Form。在JSP中,用request.getParameter("XXXX")来获取,虽然jsp中也有request.getQueryString()方法,但使用起来比较麻烦,比如:传一个test.jsp?name=hyddd&password=hyddd,用request.getQueryString()得到的是:name=hyddd&password=hyddd。在PHP中,可以用$_GET和$_POST分别获取GET和POST中的数据,而$_REQUEST则可以获取GET和POST两种请求中的数据。值得注意的是,JSP中使用request和PHP中使用$_REQUEST都会有隐患,这个下次再写个文章总结。

    4.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。

    总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!

    原文:

    HTTP中Get与Post有什么区别?www.ithut.top
    62782b7269b3f729f5a1adc48efedb87.png
    展开全文
  • GETPOST是HTTP请求的两种基本方法,他们都是HTTP协议中的请求方法。...上面就是一个GET请求,再来看一个POST请求演示截图:POSTGET请求区别总结:get请求可以被缓存而post请求不能被缓存get请求的...
  • 1.get 查看 2.put更新修改(跟数据库中的update一样)不改变数据种类 3.post 增加创建(跟数据库中的insert一样)改变数据种类 ...get向服务器发送索取数据的一种请求,post向服务器发送提交数据的请求 ...
  • Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOSTPUTDELETE URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GETPOST,P
  • 现在的模拟发送请求插件很多比如老外的postman等,但亲测咱们国内的 ApiPost 更好用一些,因为它不仅可以模拟发送getpostdeleteput请求,还可以导出文档,支持团队协作也是它的特色。另外老外的思维跟我们还是...
  • 很快有人回答“put请求单个数据”,后面提问人又去网上查了资料,查出来 putpost区别是 “put 同样的请求,前一条会被后一条覆盖”。接着另一位群友又发表了不同意见,并直接在群里上传了一个截图:群友不知道...
  • 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GETPOST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这...
  • 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。背了几个“标准答案”:GET在浏览器回退时是无害的,而POST会再次提交请求。GET...
  • get post put delete区别

    2020-01-18 12:50:44
    1.Http定义了与服务器交互的不同方法,最基本的方法分别是get,post,put,delete 分别对应查、改、增、删四种操作 ①根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 所谓安全的意味着该操作用于获取...
  • **3.**另外一个是,早期的Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计,所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GETPOST两种HTTP方法,而不支持PUTDELETE方法。...
  • GETPOSTPUTDELETE请求区别

    千次阅读 2019-02-12 16:04:20
    1、GET请求会向数据库发索取数据的...2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次...
  • 1. POST /uri 创建 2. DELETE /uri/xxx 删除 3. PUT /uri/xxx 更新或创建 4. GET /uri/xxx 查看 GET操作是安全的。所谓安全是指不管进行多少次操作,资源的状态都不会改变。比如我用GET浏览文章,不管...
  • Http Get Post put delete

    2015-04-24 14:43:41
    HTTP POST GET 本质区别详解 一 原理区别  ...Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOSTPUTDELETE  URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于
  • Get Post put delete 详解

    千次阅读 2015-01-22 10:46:55
    HTTP POST GET 本质区别详解 一 原理区别  ...Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOSTPUTDELETE  URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于
  • (转)http get post put delete HTTP POST GET 本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 ...
  • 转:Http Get Post put delete

    2011-03-30 14:52:00
    HTTP POST GET 本质区别详解 ...Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOSTPUTDELETE URL 全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述...
  • 最近读了http的入门书籍《图解HTTP... 语义 ... 日常开发过程中,最常用的是get post put delete,在http协议的规定中,这四个method属于标准的crud,分别代表了增删改查,存在着语义上的差别。 当然你要是乐意的话...
  • GETPOSTPUTDELETE区别

    千次阅读 2018-01-08 11:02:17
    POST /uri 创建 DELETE /uri/xxx 删除 PUT /uri/xxx 更新或创建 GET /uri/xxx 查看 GET操作是安全的。所谓安全是指不管进行多少次操作,资源的状态都不会改变。比如我用GET浏览文章,不管浏览多少次,那篇文章...
  • 给大家简单介绍一下常用的GETPUT,POSTDELETE这几种请求方式的区别:  GET请求:目的是获取信息,是发送获取数据的请求,只是用来查询,不会影响资源的内容  如进行查询操作,去数据库里select 操作  PUT...
  • getputpostdelete含义与区别 1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生...
  • 二、常用GETPOST主要区别(用于判定使用那种情况) 1、GET请求主要是URL方式,POST主要是 Request Body方式。 2、GET请求中文参数一般要转码,POST请求不需要。 3、GET请求在安全性不然POST请求高。 4、GET请求的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,902
精华内容 760
关键字:

getpostputdelete区别