日常工作中我接触到最多的是HTTP接口,这篇文章专门讲下HTTP接口的相关知识
1、什么是HTTP接口
HTTP 接口是基于HTTP协议的开发接口
2、什么是网络协议
网络协议是计算机之间为了实现网络通信而达成的一种约定,不同厂商生产设备,不同操作系统组成的计算机,都按照此约定的协议生产,这样就实现了通信
3、什么是HTTP协议
HTTP协议,英文:Hyper Text Transfer Protocol,翻译为超文本传输协议,是从web服务器传输超文本标记语言(HTML)到本地浏览器的传送协议
HTTP协议是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件,图片文件、查询结果等
HTTP协议一般用于B/S架构。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求(Request),WEB服务器会通过请求给到对应的响应(Response)
4、请求(Request)
请求是我们发送给接口的数据对象,包含接口地址(URL),请求方法,参数,请求头(Headers), Cookies, 数据等
请求(Request)之常见请求方法
GET:请求指定的页面信息,并返回实体主体
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面
请求(Request)之请求方式中POST和GET的区别
都包含请求头请求行,POST比GET多了请求body
GET多用来查询,请求参数放在URL中,不会对服务器上的内容产生作用。POST用来提交,如把账号密码放入body中
GET是直接添加到URL后面的,直接就可以在URL中看到内容,而POST是放在报文内部的,用户无法直接看到。
GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定。而POST中URL的长度没有限制
请求(Request)之请求头(Headers)
Connection:表示是否需要持久连接,HTTP1.1默认进行持久连接。keepalive、close
User-Agent:发出请求的用户信息
Host:请求服务器的域名和端口号
Cookie:传递cookie信息给服务器
请求(Request)之Cookie和Session
**Cookie/Cookies: **是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Session:服务端为客户端访问所建立和维持的会话,通常会生成一个唯一的id,会话有一定的有效期
cookie:保存在客户端,数据不超过4kb,只能用ASCii字符串,同源页面共享。一般用于记住用户登录状况,用户习惯,购物车等
session:存在服务端,数据大小5m或更大,存储任何类型数据,不同浏览器不同窗口不共享。用来登录验证
5、响应(Response)
接口返回的信息,包含HTTP状态码,响应头和响应信息
原始相应数据(Raw格式,Fiddler抓包)
常见的响应格式:html、json、xml
响应(Response)之状态码
状态码分类:
1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。
常见状态码:
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
6、另一个协议HTTPS
HTTP访问的账号密码都是明文传输, 这样客户端发出的请求很容易被不法分子截取利用,因此,HTTP协议不适合传输一些敏感信息,比如:各种账号、密码等信息,使用http协议传输隐私信息非常不安全
为了解决HTTP存在的问题,就用到了HTTPS
HTTPS 协议:HyperText Transfer Protocol over Secure Socket Layer,HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
SSL是什么?
SSL(Secure Socket Layer,安全套接字层):SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
7、总结HTTPS和HTTP的区别
安全性:HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
证书:使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
响应速度:HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
连接端口:HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,HTTP 是 80,HTTPS 是 443。
服务器资源:HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源
网友评论