一、接口相关知识

一、什么是接口

解释1:服务端为客户端提供数据增删改查的桥梁,因为客户端与数据库是不能直接交互的,所以需要服务端处理,那么服务端就是客户端与数据库的桥梁,也就叫做接口。

解释2:客户端为了实现功能,需要请求更删改查服务端的数据,而和服务端定义的一个协议,这也叫做接口。

二、接口的组成结构

1、接口的请求结构:HTTP的URL是怎么组成为一个接口的,如下:
在这里插入图片描述
2、请求协议
http — 普通的http请求
https — 加密的http请求,传输数据更加安全
ftp — 文件传输协议,主要用来传输文件

(1)http与https请求协议的区别 
		HTTPS是密文传输,HTTP是明文传输
		默认连接的端口号是不同的,HTTPS是443端口,而HTTP是80端口
		HTTPS请求需要CA证书要验证身份,而HTTP则不需要CA证书
		HTTPS=HTTP+SSL+认证+完整性保护

	相同点:
		都是采用同一个基础协议作为HTPP或HTTPS客户端—浏览器
		设立一个连接到Web服务器指定的端口
		服务器接收到请求,会返回一个状态码以及消息
		系统使用统一资源定位器URL模式,因此资源可以被唯一指定

	不同点:
		HTTP的URL是以http://开头。HTTPS的URL是以https://开头
		HTTP是不安全的,HTTPS是安全的,存在明文与加密
		HTTP是80端口,HTTPS是443端口
		在OSI网络模型中,HTTP处于应用层,HTTPS工作在传输层
		HTTP无需加密,HTTPS需要加密
		HTTP无需证书,HTTPS需要安装证书
		总体来说,关键的区别在于https协议多了一层安全套接字

(2)get方法与post方法的区别
	功能不同:
		get是从服务器上获取数据。只能读
		post是向服务器传送数据。能读能写
	过程不同
		get参数通过URL传递
		post参数放在Request body中
	获取值不同
		对于get方式,服务器端用Request.QueryString获取变量的值。在flask里面用的是request.args.get获取变量值
		对于post方式,服务器端用Request.Form获取提交的数据。在flask里面用的就是request.form.get获取提交的数据
	传送数据量不同
		get传送的数据量较小,不能大于2KB。
		post传送的数据量较大,一般被默认为不受限制。现在都在用nginx,大小取决于服务nginx配置,100KB,200KB都是不等的。
	安全性
		get安全性非常低,因为参数直接暴露在URL上,所以不能用来传递敏感信息
		post安全性较高。

3、请求ip:就是指提供接口的系统所部署的服务器地址

4、请求端口:http是默认80,https默认是443

5、接口地址:指系统提供的接口在什么位置

6、接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数,用“&”来区分参数个数。

三、请求、响应包含几部分

http协议报文

1、请求报文(请求行/请求头/请求数据/空行)

(1)请求行
包含请求方法、URI 和http版本

GET/sample.jspHTTP/1.1

(2)请求头(key value形式)
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:主机地址

Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate

(3)请求体
post方法中,会把数据以key value形式发送请求

username=admin&password=admin

(4)空行
发送回车符和换行符,通知服务器以下不再有请求头

2、响应报文(状态行、消息报头、响应正文)

(1)状态行

HTTP-Version+Status-Code+Reason-Phrase
HTTP/1.1 200 ok
分别表示http版本 + 状态码 + 状态代码的文本描述

(2)响应头

响应头:包含服务器类型,日期,长度,内容类型等
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112

(3)响应体

{
    
    
	"code": 0 
	"msg": "OK"
	"data": {
    
    
	}
}

四、常见的状态码

1xx: 信息性状态码

    100, 101

2xx: 成功状态码

    200:OK

3xx: 重定向状态码

    301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向;

    302: 临时重定向,显式重定向, Location响应首部的值为新的URL

    304:未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可。

4xx: 客户端错误状态码

    404: 请求的URL资源并不存在

5xx: 服务器端错误状态码

    500: 服务器内部错误

    502: 前面代理服务器联系不到后端的服务器时出现

    504:这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应

五、完整的请求过程

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 客户端or浏览器对页面进行渲染呈现给用户

六、客户端发起一个接口请求,这个过程各个端做了哪些事

三次挥手
客户端——服务端:客户端发送请求给服务端
服务端——客户端:服务端收到客户端连接
客户端——服务端:客户端发送消息给服务端

四次挥手
主动方——被动方:主动方告诉被动方断开连接
被动方——主动方:被动方收到断开连接请求
被动方——主动方:被动方准备断开连接发送给主动方
主动方——被动方:主动方断开连接

猜你喜欢

转载自blog.csdn.net/zhouzongxin94/article/details/124281455