Java教程

接口基础第三篇:HTTP协议

本文主要是介绍接口基础第三篇:HTTP协议,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

HTTP请求方式

1 常见请求方式

 

 

 

常见的接口类型:

get

它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。

格式:请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接;

场景:get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,然后把信息返回出来;

特点:1)请求数据量小,2)参数暴露于url地址中,故存在安全隐患。

 

post

post向服务器提交数据,这个方法用途广泛,几乎目前所有的提交操作都是靠这种方式完成。它用来向指定资源提交数据进行处理请求(例如:提交表单和上传文件),数据包被包含在请求体中,post请求可能导致新的资源的建立或者已有的资源的修改。

 

说明:向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会导致新资源的建立。场景:如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论。

特点:请求数据量大,安全性高。

 

 

 

如,豆瓣的发表评论的开放api

POST

https://api. douban. com/v2/book/reviews

 put比较少见,HTML表单也不支持此方式。本质上来讲, put和post极为相似,都是向服务器发送数据,但它们之间有一个重要区别,put通常指定了资源的存放位置,而post则没有,post的数据存放位置由服务器自己决定,客户端向服务器传送的数据取代指定文档的内容。

 

 

 

说明:put请求用于向指定资源位置上传最新内容。

 

场景:如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论。

 

如豆瓣的修改评论的开放api。

PUT https:// api. douban. com/v2/book/review/ :id

delete

delete删除某一个资源,基本上这个也很少见,比如amazon的S3云服务里面就用的这个方法来删除资源。

 

 

说明:请求服务器删除请求里url所标识的资源;

 

场景:如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论;

 

如豆瓣的删除评论的开放api。

DELETE

https://api. douban. com/ v2/book/review/ :id

2 get请求与post请求的区别

 

 1.提交数据的形式

  • GET方法一般是指获取服务器上的数据,请求参数(query string查询字符串)直接跟着URL后边,以?分割URL和传输数据,参数之间以&相连(?key1=value1&key2=value2)的形式,直接可以放到浏览器地址栏里,例如登录就是采用GET方法。

    如:login.actionname=hyddd&password=idontknow&verify=%E4%BD%A0%E5 %A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

  • POST方法是指客户端给服务器上提交表单数据,会把数据放到请求数据字段中以&分隔各个字段,请求行不包含数据参数,地址栏也不会额外附带参数,所以POST是通过表单提交的,请求参数放在body中,如网页上的新用户的注册、调查问卷和答题就是采用POST方法。

 2.提交数据的大小/长度

  • get是直接在浏览器地址栏输入,直接影响到了URL的长度,但HTTP协议规范中其实是没有对URL限制长度的,限制URL长度的是客户端或服务器的支持的不同所影响:比如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。由于浏览器有限制,一般整个URL的长度可以很长,但是不能超过2049KB的大小限制,而post没有大小限制。

  • post方式HTTP协议规范中也没有限定,起限制作用的是服务器的处理程序的处理能力。所以大小的限制还是得受各个web服务器配置的不同而影响。

 3.提交数据的安全性

 

  • 由于get的参数是在浏览器地址栏URL直接拼接,用户名和密码将明文出现在URL上,暴露在互联网中,安全性差,不能用来传递敏感信息。

     

  • post请求参数放在body里,是通过表单数据提交,post比get方式的安全性要高。

get方式安全性弱因为以下几个原因:

(1)登录页面有可能被浏览器缓存;

 (2)其他人查看浏览器的历史纪录,那么别人就可以拿到账号和密码;

 (3)当遇上跨站的攻击时,安全性的表现更差;

 4.编码方式

  • get的参数只能支持ASCII;

  • post没有限制,也允许二进制数据;

5.请求方式

  • get是获取指定的资源

  • post是向指定的资源提交要被处理的数据

 6.请求体

  • get没有请求体;

  • post有请求体;

7.效率方面

 

    • get产生一个tcp数据包;

    • post产生两个tcp数据包,post需要两步,时间上消耗要多一点,get比post更有效;

8.请求过程

  • 对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),get请求的过程:

        1.浏览器请求tcp连接(第一次握手);

        2.服务器答应进行tcp连接(第二次握手);

        3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http          会在此时进行第一次数据发送);

        4.服务器返回200OK响应;

 

  • 而对于post,浏览器先发送header,服务器响应100continue,浏览器再发送data,服务器响应200ok(返回数据),post请求的过程:

        1.浏览器请求tcp连接(第一次握手);

        2.服务器答应进行tcp连接(第二次握手);

        3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在          此时进行第一次数据发送);

        4.服务器返回100 Continue响应;

        5.浏览器发送数据;

        6.服务器返回200 OK响应;

 

 

 

转自:https://mp.weixin.qq.com/s?__biz=MzI5MTg1NjA4Nw==&mid=2247486271&idx=1&sn=a97c366054f2c1432f37a8013f104b50&chksm=ec0b0087db7c8991a18fa1ec1894c72f0572b936035d7477e24f57500a1d27949476ad04d7af&scene=21#wechat_redirect

这篇关于接口基础第三篇:HTTP协议的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!