zoukankan      html  css  js  c++  java
  • 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则不能。

  • 相关阅读:
    Python Day 30 网络编程 (串讲 FTP作业)
    Python Day 29 网络编程 ( socket中的一些常见方法,登录验证,socketserver模块)
    Python Day 28 网络编程 (socket远程命令执行, tcp黏包现象,以及struck模块的使用 )
    Python Day 27 网络编程 (socket udp)
    Python Day 26 网络编程 ( 网络编程基础 socket tcp)
    Python Day 25 蜥蜴串讲
    Python Day 24 面向对象进阶(双下方法 __new__ __del__ item系列 异常处理)
    Python Day 23 面向对象进阶(内置方法:反射,isinstance和issubclass,__str__和__repr__和其他双下方法)
    Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数)
    aaencode:用颜文字来加密吧
  • 原文地址:https://www.cnblogs.com/newsss/p/13040486.html
Copyright © 2011-2022 走看看