本人关于post与get的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pickers/article/details/79284572
关于post和get是啥和有什么用和他们之间的有啥区别,虽然现在搞得是蓝牙方面的嵌入式开发,但是这个还是比较重要的,是十分有必要了解一下的。
针对某人比较懒的性格,我这边会尽力简单的表述它,其实web都比较熟悉,一般在浏览器上面敲百度,其实他是访问百度的url,即:www.baidu.com,之后会对着查找本地域名,再找dns域名表,然后一级一级获取到为你服务的服务器ip地址,现在很多大型服务器在不同的地方都有站点的,然后该服务器会返回给你一些数据,这些数据主要是在你浏览器上面显示的,所以一般为html格式的,为你提供服务,其实我们公司之前所谓的弄服务器就是控制url访问我们的地址,然后我们的地址根据一些你访问携带的信息(这些信息就是我要说的重点)来进行判断检查,从而返回自己定义的html数据给你,这些基于java的话应该是jsp页面,是动态的前端页面(这就分成一个比较大的学习点了,可以称之为javaweb),所谓动态就是可以写一些变量啊,代码等等,可以嵌入JavaScript代码,而html只是一种静态的显示数据的东西。这一套流程又被称之为http请求和响应,因为url也好,返回的数据也好,都遵循某种应用层协议,那就是http协议。
流程大体就是这样,那么主题来了,那些url可以理解,基本就是一个标识,相当于一个索引,最终被翻译成ip地址,那么我们之前所说的信息数据是怎么传过去的呢,比如你一般访问一个网站,有的时候需要注册,那么那些注册信息是怎么被服务器接收的,emmm,这边就该猪脚上场了,通常来说,你一般提交一些信息都会有个确定事件,比如说注册按键,填写好信息后点下注册按键之后就会给你返回信息,其实这个注册按键点击后,他会在后面获取你填写的每个信息,然后用web前端开发的同学规定的post/get的方式将数据传过去,这个时候服务器端按照这个东西来获取数据,具体服务器端可能是通过getpost啊等等,基于tomcat的服务器其实底层帮你做处理了(如果你有兴趣,我这个正好也有所研究,亦可花时间给你整理一下,不过基于我的猜测,emmm你有兴趣可能性不大),他会返回你一个api获取gest或者post的数据,具体使用post还是get就看前端和服务器同学的协商了,不过像一般的小公司基本部分前端和服务器,基本一个人做完了。
好了,猪脚已经被抢了太多戏份,简单说下GET和POST,其实大部分人都理解都为以下几点:
1)有人说post更安全啊,因为post格式的会把重要的数据放在里面,别人看不到,而且传输的数据多,哪像get一样,直接将数据拼接到url后面,那岂不是一登录,别人只要看下url不就知道我的账号密码了嘛,一点保险都没有。(其实不管怎么传都是不安全的,只是相对好点)
2)有人说,post不好啊,太慢了,没有get处理快,post请求比get要多几个请求头(其实我认为差不了多少)
3)还有就是关于传递参数的数量问题了,post确实是比get要多,因为post没有限制,而get是有限制的,具体的限制依据与不同的浏览器与web服务器。额IE最大好像是2083byte,chrome是8182byte。

到这时,基本这些够和一般的面试官扯一扯了,这边需要强调一点,那就是上述的post和get只是基于web的,也就是说基于http的概念,其实他们还有本身的意思,你要是查那些rfc文档中的介绍,下面是官方的描述,当科普即可,你别当真,不然容易混淆,只要知道常用的和官方的rfc文档介绍有出入即可。


以下不重要:
8.1  GET
      GET方法就是以实体方式得到由请求URI所指定资源的信息。如果请求URI只是一个数据产生过程,那么最终要在回应实体中返回的是由该处理过程的结果所指向的资源,而不是返回该处理过程的描述文字,除非那段文字恰好是处理的输出。
      如果请求消息包含If-Modified-Since标题域,GET方法的语法就变成“条件GET”,即“(conditional GET)”。 条件GET方法可以对指定资源进行判断,如果它在If-Modified-Since标题域(见10.9节)中的指定日期后发生了更新,才启动传输,否则不传输。这种条件GET允许被缓存的实体在不必经过多次请求或不必要的数据传输就能进行刷新,从而有助于降低网络负载。
8.3  POST
      POST方法用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列(Request-Line)中请求URI所指定资源的附加新子项。POST被设计成用统一的方法实现下列功能:
      o 对现有资源的注释(Annotation of existing resources);
      o 向电子公告栏、新闻组,邮件列表或类似讨论组发送消息;
      o 提交数据块,如将表格(form [3])的结果提交给数据处理过程;
      o 通过附加操作来扩展数据库。
      POST方法的实际功能由服务器来决定,而且通常依赖于请求URI。在POST过程中,实体是URI的从属部分,就好象文件从属于包含它的目录、新闻组文件从属于发出该文件的新闻组、记录从属于其所在的数据库一样。
      成功的POST不需要在原始服务器创建实体,并将其做为资源;也不需要为未来的访问提供条件。也就是说,POST方法不一定会指向URI指定的资源。在这种情况下,200(成功)或204(无内容)都是适当的回应状态,取决于实际回应实体中对结果的描述。
      如果在原始服务器上创建了资源,回应应是201(已创建),并包含一个实体(对"text/html"类型最为适合),该实体中记录着对新资源请求的状态描述。
      在所有的HTTP/1.0的POST请求中,必须指定合法的内容长度(Content-Length)。如果HTTP/1.0服务器在接收到请求消息内容时无法确定其长度,就会返回400(非法请求)代码。
      应用程序不能缓存对POST请求的回应,因为做为应用程序来说,它们没有办法知道服务器在未来的请求中将如何回应。




猜你喜欢

转载自blog.csdn.net/pickers/article/details/79284572