Python3学习笔记_接口基础一_20200604
1、HTTP协议
#示例1:
http://www.keyou.site:8000/docs
www.keyou.site:8000—服务器地址
/docs-----------------接口地址
接口返回来的数据是json格式
什么是接口?
硬件接口:两个不同的硬件设备之间的连接
比如:USB接口、耳机接口
作用:连接功能,适配功能
软件接口:两个或多个软件之间的连接
内部接口:客户端与服务器的接口,用来实现客户端和服务器间的数据传递
外部接口:第三方登录、第三方支付【支付宝/微信】
用户界面:
UI–user interface—用户界面/用户接口
是一个接口吗?是一个接口,是一个软件接口
平时测的是api:
application programming interface
应用程序可编程接口
只是接口当中的一种
协议:
HTTP、ftp、ws、double
接口进行数据传输要遵循一定的协议,这个协议常用的就是HTTP协议
接口测试:
发送一个请求给服务器,然后服务器返回一个响应数据,然后对响应数据进行分析,
判断是否与我们预期的返回一致【是否遵守了协议】,从而验证功能是否正确
协议:
大协议:HTTP
小协议:接口文档
HTTPS:
HTTP的安全版,在HTTP下加入了SSL层
SSL:主要用于web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全
HTTP的默认端口号:80
HTTPS的默认端口号:443
邮件默认端口:25
加密的邮件默认端口:465
client-------request-----------》server
《-------response---------
client:浏览器、App程序
http://www.baidu.com:
http—协议
www.baidu.com–域名
/login—接口地址
?username=lemon—参数
2、HTTP请求信息
请求行:
请求方法/请求网址/协议版本
请求头部:header
host
connection
upgrade-insecure-requests
user-agent:用户代理,通过客户端代理
referer
accept-encoding
cookie
备注:域名和IP地址之间是映射关系,域名是为了好记
请求数据:
3、HTTP响应信息:
状态行:
状态码
消息报头:
content-type:返回的数据格式
test/html
application/json
application/xml
响应正文:
4、http响应状态码
200:请求成功
201:资源创建成功
3XX:重定向
比如:登录成功跳转到首页
机制:在响应信息中设一个字段:location,这个字段值是你要连接到的地址,返回的状态码就是3XX
客户端接收到这个响应后,根据状态码会检查有没有location这个字段,有的话就跳转到对应的页面
301:永久转移新地址
302:临时转移新地址
304:缓存,重复请求,会检查有没有更新,没有更新就把原来的数据给你,避免资源的消耗
4XX:客户端错误,前端问题
400:不好的请求
401:需要登录,不登录就是401
403:页面被禁止访问
404:页面找不到
405:客户端请求中的方法被禁止
500:服务器内部错误【后端程序出错】
502:bad gateway,请求未完成,服务器从上游服务器收到一个无效的响应
5、HTTP请求方法:
GET:获取资源
POST:提交资源
PATCH:用于更新服务器的数据【局部更新】
DELETE:用于服务器删除指定的数据
PUT:用于更新服务器的数据【数据整体更新】
COPY
OPTIONS
HEAD
LINK
UNLINK
LOCK
UNLOCK
get和post的区别:
应用场景不同:
get获取资源
post提交数据,创建新的数据/对已有数据的修改
get请求的参数都可以显示在浏览器网址上,通过?param=value【即query string方式】查询字符串
post可以使用query string,但是通常不这么做,通常放到body请求体当中
安全性:
get和post并没有谁更安全,抓包都是可以看到里面的数据,网上说的post更安全是因为数据放到了body当中,肉眼看不到而已,
但其实也是不安全的,而get请求是直接在URL中肉眼可以看到
备注:加密与请求方法没关系,什么东西都是可以加密的
6、鉴权、授权
鉴权:相当于给一个通行证
授权:鉴定是否有权限访问(判断有没有通行证)
cookie:存到客户端
session:存到服务端
token:令牌,凭证
作用:
HTTP协议是典型的无状态协议,记不住,为了让客户端有状态,所以引入了cookie和session,记住用户
流程:
发送请求,服务器会把登录的账号信息存起来,这个东西就是session,然后服务器返回响应的时候会设置个字段:set-cookie,
这个字段值比如为sessionid或者是jsessionid,这个东西返回给客户端告诉客户端他是谁,然后客户端就将这个信息存到了他的
cookie当中,存的东西就是服务端传过来的sessionid或者是jsessionid,这个sessionid或者是jsessionid会和域名或者是IP
绑定到一起的,表示这个sessionid或者是jsessionid是属于这个域名的,第二次请求的时候,cookie会自动带上,服务器就会检查
有没有sessionid或者是jsessionid,有的话就核对跟之前是不是一致,同时也会有过期时间或者是sessionid或者是jsessionid不对的
情况,也是不能登录成功的
token:
令牌,凭证
访问其他的接口,必须有这个令牌才能访问
token不需要存到服务器
有了token为啥还要session,因为有的浏览器是不会存你的session的
token和session的区别:
流程上的区别:
第一次访问:
session:存到服务器
token:不需要存到服务器
第二次访问:
session:不需要手动的添加,请求的时候自动的就带上了
token:需要手动的添加到请求上才能访问
token不存到本地,直接解密:
因为是一堆加密的数据,虽然他可以保存到本地,
意味着服务器不需要消耗存储资源和查询资源
消耗的是计算资源,用于解密,所以速度会快一点
和域名没关系,不绑定
session存到服务器:
服务器需要消耗存储资源和查询资源,所以会慢一些
和域名绑定关系
总结:
cookie:
1、cookie是在HTTP协议下,服务器或脚本可以维护用户信息的一种方式,cookie是由Web服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息,无论何时用户访问到服务器,都会带上该服务器的cookie信息
2、一般cookie都是有效期的,cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该cookie就会被系统清除
session:
1、session将数据存储在服务器中,服务器会为每一个用户创建一条session,用户访问服务器的时候需要拿着sessionid去表明自己的身份
2、session的实现是基于cookie,session需要借助于cookie来存储sessionid
注意:cookie和session都是开发设置的,不要去想怎么设置,跟你没关系!!!!!
token:
1、token是需要手动传到参数当中的。session派发的sessionid自动存储在浏览器的cookie api.keyou.site/ 当中,在下次访问这个网站的时候,会自动带上
2、sessionid会存到服务器,需要消耗资源,在浏览器传输过来,要查询,也消耗资源
3、token不需要存储到服务器,服务器会解密,消耗CPU
4、 token可以跨平台,跨域
输入URL后的过程:
a. 域名解析,DNS解析--》IP地址(分层级)
b. 发起TCP连接的三次握手,建立连接
c. 建立TCP连接后发起http请求
d. 服务端响应http请求,返回响应报文
e. 浏览器页面渲染,展示
f. 断开TCP连接,四次挥手
三次握手四次挥手:
第一次握手:建立连接时,客户端向服务端发送请求报文(SYN),'我想建立连接'
第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文(SYN/ACK),'同意建立'
第三次握手:客户端收到服务器的确认后,再次向服务器发送确认报文,完成连接(ACK)
三次握手主要是为了防止已经能失效的请求报文字段发送给服务器,浪费资源
第一次挥手:客户端想分手,发送消息(FIN)给服务器
第二次挥手:服务器通知客户端已经接受的挥手请求,返回确认消息(ACK),但还没做好分手准备
第三次挥手:服务器已经做好分手准备,通知客户端(FIN)
第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接