接口相关基础介绍

常见的接口协议:

1、HTTP  超文本传输协议

2、HTTPS  安全超文本传输协议

3、FTP  文件传输协议( Xshell的文件拖拽)

4、TCP 网络控制协议

5、IP  互联网协议

6、UDP  用户数据协议

常用到的接口:

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTP与HTTPS的区别
  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

REST风格接口介绍

就是用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作;

举个栗子:

URL 用来定位资源,跟要进行的操作区分开,这就意味这 URL 不该有任何动词。

比如,我们有一个friends接口,对于“朋友”我们有增删改查四种操作,怎么定义REST接口?
增加一个朋友,uri: generalcode.cn/va/friends 接口类型:POST
删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE
修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT
查找一个朋友,uri: generalcode.cn/va/friends 接口类型:GET

上面我们定义的四个接口就是符合REST协议的,这几个接口都没有动词,只有名词friends,都是通过Http请求的接口类型来判断是什么业务操作。定义这样一套统一的接口,在web,ios,android三端都可以使用相同的接口,十分方便。

http接口的构成(举例说明:查看vdc接口)

request header

GET /api//cloud/virtualdatacenters?enterprise=1 HTTP/1.1                               请求方式/接口地址/HTTP版本

Host: 192.168.3.183                                                                                           主机IP地址

Connection: keep-alive                                                                                       保持连接状态(如果设置了代理抓包,就会变成Proxy-Connection )

Accept: application/vnd.esage.virtualdatacenters+json;version=3.0                  客户端希望接收的数据类型

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36                       用户代理(想访问网站提供所使用的浏览器类型、版本、操作系统)

Referer: http://192.168.3.183/ui/navroute/hypervisor                                        指示改请求从哪儿链接过来的(防盗链/统计网站流量)

Accept-Encoding: gzip, deflate                                                                          客户端发送给服务端,声明服务端支持的接收内容编码

Accept-Language: zh-CN,zh;q=0.9                                                                   客户端发送给服务端,声明服务端支持的接收接收语言

Cookie: token=1cb9a9e4-6eb1-4ef8-838c-b9e1322813e3; ESGSESSIONID=6257001126885626317; auth=bGl4aWFvcWlhbjoxNTY3MTU1NTgwMzkxOjI5NWZjM2ZjMmIxY2U0ODNlNDRkNjQ2MzI3NjA5NWE5OkVTQUdF 用户Cookie信息(用户登录的时候,认证成功后,会返回token和auth,在下次请求拼接成一个Cookie信息)

response header

HTTP/1.1 200 OK                                                                                                  HTTP版本/响应码

Date: Fri, 30 Aug 2019 08:16:16 GMT                                                                  响应返回时间

Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips                                          服务器信息

Set-Cookie: auth=bGl4aWFvcWlhbjoxNTY3MTU2NTc2MDY5OjkzZGIxNWUyMGQ3NWY1ZmRjNGU2NGYzY2IxZGE2MTM3OkVTQUdF; Expires=Fri, 30-Aug-2019 09:16:16 GMT; Path=/; HttpOnly

Content-Type: application/vnd.esage.virtualdatacenters+json; version=3.0         表示实际发送的数据格式

Keep-Alive: timeout=5, max=96                                                                            过期时间5s,max过了96s,强制断掉链接(max会自动减1,直到为0,会强制断掉链接)

Connection: Keep-Alive                                                                                        保持连接状态                           

Transfer-Encoding: chunked                                                                                分段传输数据方式(HTTP数据传输数据方式,运行服务器发送给客户端的数据可以分成多个部分, Content—length表示数据的长度,可以知道什么时候截数据)

不积跬步,无以至千里;不积小流,无以成江海。
原文地址:https://www.cnblogs.com/xuezhimin-esage-2020/p/14179975.html