python_接口基础知识

一。

1.接口含义

接口,两个不同事物之间进行适配的一种工具、规范和协议。

一般分为:1)硬件接口:是指同一计算机不同功能层之间的通信规则称为接口。

     2)软件接口:是指对协定进行定义的引用类型。

例子:

usb,键盘,鼠标(有线)硬件接口

api(application programming interface , 应用程序可编程接口),UI (user interface 用户接口, 用户界面)接口属于软件接口

2.网络请求

前端:由客户端、前端发起对应的请求。

服务端:后台服务器,被动接收请求。

常见的请求:http,websocket , webservice请求

 

3.HTTP请求,协议

1)请求

包含:

--请求首行

--请求头  :headers,  content-type, 数据格式,爬虫  user-agent: 限制请求的来源。, ip ban

--请求体

   请求首行:

1.url,  域名地址,ip;

2.请求方法(GET,POST,PUT,DELETE,OPTION,HEAD);

3.远程 IP 地址;

4.协议版本

   请求头:

你包裹上面的说明,你寄的是什么啊,多久到啊,价值多少啊。你这个请求的说明信息。

不需要每个都了解,但是如果某个收包裹的人(服务器)要求你必须带上指定的头信息,你就要带上,不然访问不成功。。。 比如很多退件的,会给你说明,不要到付,到付拒收!!

就算他没有说明,你到付,也不会有人收。。

- user-agent
- 用户代理
- 手机,浏览器, postman, jemter
- content-type : 请求数据格式
- cookie
- 会员卡

   请求体:

你的包裹。 包裹可能是空的,你把一些信息直接放到包裹说明上,懒得拆了。 --》 我很好,不用担心。放到里面多麻烦,有风险。太容易被人看到了。

快递:勿忘我

 

域名和IP区别:

1.域名更好记忆(例如:大家都知道 ‘wwwbaidu.com’而不是它的ip:183.232.231.174)

2.域名需要映射ip地址

3.域名需要先进行 dns解析为 ip地址,才能进行请求。

 

2)http协议

超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的HTML文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

HTTPS协议

全称(HyperText Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。

SSL:全称(Secure Socket Layer,安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输安全。

其中:

HTTP的端口号为:80

HTTPS的端口号为:443

 

http请求过程:

http协议请求是基于TCP网络传输协议来实现的,首先会通过三次握手来建立连接进行数据传输,传输完毕后以四次挥手结束通信。因此http协议请求是无状态的。

输入url后,经历的过程

a.域名解析,DNS解析 ---》IP地址(分层级);

b.发起TCP连接的三次握手,建立连接;

c.建立TCP连接后发起http请求;

d.服务端响应http请求,返回响应报文;

e.浏览器页面渲染,展示;

f.断开TCP连接,四次挥手。

 

tcp标识含义,详情参考:https://blog.csdn.net/zengrenyuan/article/details/80313449   :

ACK(acknowledgement 确认)
PSH(push传送) 
FIN(finish结束) 
RST(reset重置) 
URG(urgent紧急)
SYN(synchronous建立联机) 
Sequence Number(顺序号码) 
Acknowledge Number(确认号码)

三次握手:

第一次握手:建立连接是,用户端向服务器发送请求报文(SYN)“我想建立连接”

第二次握手:服务器收到请求报文后,如果同意连接,则向客户端发送确认报文(SYN/ACK)“同意建立”

第三次握手:客户端收到服务端的确认后,再次向服务器发送确认报文,完成连接。(ACK)

三次握手含义:为了防止已经失效的请求报文字段发送给服务器,浪费资源。

 

 四次挥手:

第一次挥手:客户端想分手,发送消息(FIN)给服务器

第二次挥手:服务器通知客户端已经接受的挥手请求,返回确认消息(ACK),但还没做好分手准备;

第三次挥手:服务器已经做好分手准备,通知客户端(FIN)   ---》做好的分手准备:服务端需要确保需要给请求方的报文传输已完成。

第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接。   ---》这里服务端在没有接到客户端确认消息会等待客户端 30秒,防止客户端连接失败,同时客户端若发送失败会一直发送请求。

 

 

 

http请求方法:

 

 

HTTP常用GET和POST两种请求方法,这两种方法的区别:

1.get是从服务器上获取数据,post事项服务器传送数据;

2.get请求参数是显示的,都会拼接在url上。get请求的参数是URL的一部分,可能会收到浏览器的长度限制;

3.post请求是在请求体中,消息的长度没有限制以隐藏的方式进行发送,通常用来向HTTP服务器提交 量比较大的数据(比如 请求中包含很多参数或者文件上传操作等),请求的参数类型包含在‘Content-Type’消息头里,指明该消息体的媒体类型和编码。

4.get方法入参只能使用 query string 入参方式,post可以使用bady:form /json ,query string入参方式。

 

 

 

4.响应

1)响应首行

- -协议版本号

- -响应的状态码。

 --内部人员规定一种非常专业的信息格式,暗号。 

 

常见状态码含义:

(一)

- Successful - 2xx:成功类,行为被成功地接受、理解和采纳
- - 200 OK
- 服务器成功返回用户请求的数据
- 往往为了简化处理
- POST创建成功后应该返回201的,创建
- 404 NOT FOUND
- 找不到资源
- 500 INTERNAL SERVER ERROR
- 服务器内部错误
- 最常见的原因是:服务器内部挂了
- 比如你传递参数中有些参数是空,而导致后台代码无法解析,出现异常而崩溃

(二)

- Successful - 2xx:成功类,行为被成功地接受、理解和采纳

- 201 CREATED

- 通过POST或PUT创建资源成功

- 204 NO CONTENT

- 资源修改成功,但是没有返回内容
- 常用于DELETE操作的返回

 

- Redirection - 3xx:重定向类,为了完成请求,必须进一步执行的动作

- 301 永久重定向
- 302 临时重定向
- 304 Not Modified

 

- Client Error - 4xx:客户端错误类,请求包含语法错误或者请求无法实现

- - 401 UNAUTHORIZED
- - 没有权限访问该资源
- 典型情况:用户没有登录,没有获得对应的access token而直接访问某资源
- 403 FORBIDDEN
- 禁止访问
- 典型情况:虽然用户已登录,但是去更新/删除需要更高权限才能操作的资源
- 405 METHOD NOT ALLOWED
- 方法不允许
- 举例:比如某个资源不允许POST请求,但是你确发起了POST请求

 

响应头:

 

- content-type, 返回数据的格式
- set-cookie: 服务器返回的cookie信息

 

响应体:

- 返回的数据
- json, text, html

 

 

5.Cookies,session,token

参考链接:https://www.cnblogs.com/moyand/p/9047978.html

Cookies:

    是在HTTP协议下,服务器或脚本可以维护用户信息的一种方式。Cookie是由Web服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户访问到服务器,都会带上该服务器的cookie信息。

    一般cookie都是有 有效期的,Cookie只在浏览器上保存一段规定的时间,一旦超过规定的时间,该Cookie 就会被系统清除。

Session:

    session将数据存储在服务器中,服务器会为每一个用户创建一条session,用户访问服务器的时候需要拿着sessionid去表明自己的身份;

    session的实现是基于Cookie,session需要借助于Cookie来储存sessionID。

Token:

    token意思是‘令牌’,‘门票’是服务器端生成的一串字符串,作为客户端进行请求的一个标识。

 

 

session 与 token区别:

1.token是需要手动传到参数中的,session派发的session_id自动储存在浏览器的cookie当中,下次访问对应的网址时候,会自动带上。(这种说法也是不科学的token也是需要客户自己保存的)

2.session_id会存到服务器,需要消耗服务器资源,在浏览器中的session_id传输过来时需要查询,比较消耗服务器资源。

3.token不需要存储到服务器,服务器会解密 查看是否正确,消耗的是CPU的计算能力。

4.token 可以跨平台,跨域,session则不能。

 

posted @ 2020-06-03 22:27  1142783691  阅读(916)  评论(0编辑  收藏  举报