zoukankan      html  css  js  c++  java
  • python

    ## rest规范:
        通过不同的 method 找到对应的 url

    ## Django 请求生命周期
     - wsgi ,它就是socket 服务端,服务端接收用户请求并将请求初次封装,然后交给 Django
     - 中间件帮助我们对请求进行校验或在请求对象中添加其他相关数据,如:csrf,request.session
     - 路由匹配
     - 视图函数中进行业务逻辑的处理,可能涉及到 orm,templates ->渲染
     - 中间件对响应的数据进行处理,
     - wsgi,将响应的内容发送给浏览器

    ## CBV 和 FBV

    CBV 通过函数调用方法
    FBV 通过类调用方法
        其本质上都是 CBV
    但是 FBV 内部封装了关于 method 的方法,由于基本上都是前端的请求,所有像GET,POST等方法用的频繁,
    而CBV将这些方法封装了起来,使得开发时更便捷了许多,所以CBV更适合写接口


    ######  标准的  ######
    2.1 FBV方式请求的过程

    用户发送url请求,Django会依次遍历路由映射表中的所有记录,一旦路由映射表其中的一条匹配成功了,
    就执行视图函数中对应的函数名,这是fbv的执行流程

    2.2 FBV方式请求的过程

    当服务端使用CBV模式的时候,用户发给服务端的请求包含url和method,这两个信息都是字符串类型

    服务端通过路由映射表匹配成功后会自动去找dispatch方法,然后Django会通过dispatch反射的方式找到类中对应的方法并执行

    类中的方法执行完毕之后,会把客户端想要的数据返回给dispatch方法,由dispatch方法把数据返回经客户端

    ## HTTP 协议

    什么是 HTTP协议?

    """

    HTTP 协议是 超文本传输的协议,是一种规范。

    HTTP优点:

    1. HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记

    2. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    3.由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    4. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

    HTTP缺点:

    安全性低,数据都是以明文方式传输的。

    """


    HTTP协议是一种传输数据格式

    自己模拟过一次 客户端与服务端的 socket 连接,
    当客户端请求数据的是时候,会携带请求头与请求体,

    请求头常见类型:Content-Type,User-Agent,cookie,Accept,Host等
    请求体常见类型:application/x-www-form-urlencoded,multipart/form-data,application/json,text/xml

    而服务器需要根据指定的请求头来解析数据,
    一次请求响应后,则断开连接

    常见请求体:
        Form 表单提交
        Ajax 请求


    Django 获取请求体:
        - request.POST
        - request.body

    ## 跨域

    由于浏览器的同源策略 -- 当浏览器的url发送一个请求,请求回来的时候url,端口等不一致而导致跨域

    协议,域名,端口一致则称为同源

    解决方法: 绕过同源策略
        -- jsonp
            动态创建 script 标签
            同源策略会阻止ajax请求,但不会阻止具有 src 属性的标签 :
             <script src=''></script>        
        -- cors

            在第一次发送请求的时候,会有一个校验的过程 - opption(请求) 如果校验成功,则发送真实数据

      服务端 设置响应头
            response['Access-Control-Allow-Origin'] = "*"

    ## 中间件

     - 中间件 五个方法
     - 应用场景:
        - 登陆认证,不需要在每个函数中添加装饰器
        - 权限,当用户登陆的时候获取当前用户所有权限并放入session,当访问其他页面时,
            将当前url和session中进行匹配如有就通过,没有就禁止访问
        - 跨域,
            jsonp,
            cors

  • 相关阅读:
    CSS 基础语法
    标签
    HDU 5487 Difference of Languages BFS
    HDU 5473 There was a kingdom 凸包 DP
    HDU 5468 Puzzled Elena 莫比乌斯反演
    BNU 3692 I18n 模拟
    补题列表
    POJ 3241 曼哈顿距离最小生成树 Object Clustering
    UVa 1309 DLX Sudoku
    CodeForces Round #320 Div2
  • 原文地址:https://www.cnblogs.com/chaoqi/p/10446673.html
Copyright © 2011-2022 走看看