zoukankan      html  css  js  c++  java
  • Django-rest-framework --- 基础简介

    drf知识点 --- 后台

    全称:django-rest-framework

    知识点内容:

    1.接口:什么是接口,restful接口规范,Postman接口测试工具
    
    2.CBV生命周期源码-基于restful规范下的CBV接口
    
    3.请求组件,解析组件,响应组件
    
    4.序列化组件(灵魂)  后台对象不能直接返回,序列化,模型序列化,群操作序列化
    
    5.三大认证(重中之重)  所有认证关系都可以自定义,认证是否合法、认证是否有权限(权限六表),频率
    
    6.drf的视图家族:视图类(常用),视图工具类,工具视图类,视图集
    
    7.其他组件:过滤,筛选,排序,分页,路由(一个路由对应一个json数据)
    
    难点:源码分析
    

    django restframework介绍

    Django生命周期:

    前端发送请求-->Django的wsgi-->中间件-->路由系统-->视图-->ORM数据库操作-->模板-->返回数据给用户
    

    django rest framework生命周期

    发送请求-->Django的wsgi-->中间件-->路由系统_执行CBV的as_view(),就是执行内部的dispath方法-->在执行dispath之前,有版本分析 和 渲染器-->在dispath内,对request封装-->版本-->认证-->权限-->限流-->视图-->如果视图用到缓存( request.data or   request.query_params )就用到了 解析器-->视图处理数据,用到了序列化(对数据进行序列化或验证) -->视图返回数据可以用到分页
    

    drf框架安装

    1.drf是django的插件,所以要提前安装django

    2.按照命令:pip install djangorestframework

    3.使用drf时,要在settings中注册

    INSTALLED_APPS = [
        'rest_framework'
    ]
    

    接口

    接口:联系两个物质的媒介,完成信息交互

    web程序中:联系前台页面与后台数据库的媒介

    接口组成

    url连接:长得像返回数据的url连接

    请求方式:前台根据需求发送给后台的信息

    请求响应:前台按照指定的key提供数据给后台

    响应数据:后台与数据库交互后将数据反馈给前台

    如何写接口

    接口规范是规范化书写接口,写的接口要写url,响应数据

    注:如果将请求参数也纳入考量范围,呢就是在写 接口文档

    restful接口规范

    url连接

    1.接口用来操作数据,与网址(操作页面)有区别,所以用特定的关键字表示接口,用api关键字表示接口url

    - https://api.baidu.com
    

    2.接口都是操作前后台数据的,所以需要保证数据的安全性,接口数据安全性决定优先选择https协议

    - https://www.baidu.com/api
    

    3.如果一个接口有多个版本存在,需要在url中表示体现

    - https://api.baidu.com/v1/books/
    

    4.接口操作的数据资源称之为 资源 ,在url中一般采用资源复数形式,一个接口可以概括对该资源的多种操作方式

    - https://api.baidu.com/v1/books/
    

    5.请求方式有多种,用一个url处理如何保证不混乱 -- 通过请求方式表示操作资源的方式(五大请求方式)

    6.资源往往涉及数据的各种操作方式 -- 筛选,排序,限制

    - https://api.baidu.com/v1/books/?ordering=-price&limit=3
    
    
    五大请求方式:
        GET:获取单个或多个资源
            - https://api.baidu.com/books/
                群查,返回多个结果对象
            - https://api.baidu.com/books/(pk)/
                单查,返回单个结果对象
           
        POST:新增单个或多个资源
            - https://api.baidu.com/books/
                单增,提交单个数据字典,完成单增,返回单个结果对象
                群增,提供多个数据字典的数组,完成群增,繁多多个结果对象
            
        PUT:整体修改单个或多个资源
            - https://api.baidu.com/books/
                整体修改多个,提供多个数据字典的数组(数据字段中主要包含主键),完成群改,返回多个结果对象
            - https://api.baidu.com/books/(pk)/
                整体修改单个,提供单个数据字典(主键在url中体现),完成单改,返回的单个结果对象
                
        PATCH:局部修改单个或多个资源
            方式与put完全相同,不同的是:操作的资源如果有5个key-vlaue键值对,put请求提供的字典必须全包括,但是patch提供的字典包含的键值对0-5个都可以
        
        
        DELETE:删除单个或多个资源
            - https://api.baidu.com/books/
                多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
            - https://api.baidu.com/books/(pk)/
                单删,不需要提供额外数据,完成单删,不做任何资源返回(一般我们会返回结果信息:成功|失败)
      
    
    

    响应数据

    1.http请求的响应会有响应状态码,

    响应结果:
        1.响应对象中主要包括网络状态码(网络状态信息和网络状态码捆绑出现,不要额外设置)
        1xx:基本信息
        2xx:成功 - 200基本 201新增成功
        3xx:重定向
        4xx:客户端错误 - 400错误请求;403请求无权限;404请求资源不存在
        5xx:服务端错误 - 500服务器错误
    
    

    2.资源的状态码文字提示,接口用来返回操作的资源数据,可以拥有操作数据结果的状态码,资源状态码不像http状态码,一般都是后台与前台或者是客户约定的

    0:成功
    1:失败 -1xx:具体失败信息(要在接口文档中明确写出)
    2:无数据 -2xx:具体无数据信息(要在接口文档中明确写出)
    
    

    3.数据状态信息(一般不仅仅是对数据状态码的解释,更多是对结果的描述,给前台开发者阅读的)

    4.数据结果(常量、数组、字典),如果有子资源(图片、音频、视频),返回资源的url链接

    		{
        		"status": 0,
        		"msg": 'ok',
        		"results": [{
        			"name": "西游记",
        			"img": "https://api.baidu.com/media/book/xyj.png"
        		}]
    		}
    
    

    接口文档

    接口文档:将接口的四部分编写成文档形式(前后台测试)

    编写接口文档的方式 --word,md,Yapi平台

    Postman接口工具使用

    1.先下载对应的文档

    2.安装注册登录

    3.按照要求进行搜索

    基于resrful规范

    url连接一般都采用https协议进行传输,可以提高数据交互过程中的安全性

    看到api,就代表该请求url链接是完成前后台数据交互的

    使用标准方法(GET、POST、PUT、PATCH、DELETE)操作资源

    一个视图类可以包括常规五个请求方法:get,post,put,patch,delete

    五个请求方法处理十个资源操作的逻辑,单群查,单群增,单群局部改,单群整体改,单群删,

    规范建议:

    1.API尽量采取通过安全管道的HTTPS协议

    2.请求体与响应体统一通过json格式来承载,json使用Camel的命名规则,媒体类型需要这是为 “application/json”。

    3.请求体与响应体统一采用UTF-8编码格式,时间统一采用UTC格式: yyyy-MM-dd'T'HH:mm:ss[.SSS]'Z'。

    4. URI模版:/{domain}/{service or module}/api/{version}/{resource},URI应全为小写字母,短语单词使用“-”分隔。

  • 相关阅读:
    说一说前端路由与后端路由的区别
    HTTP 8种请求方式介绍
    JavaScript 运行机制以及Event Loop(事件循环)
    常见的数据结构
    JS中常见的几种继承方法
    JS异步编程
    js中的数据类型,以及如何检测数据类型
    js面试题之手写节流函数和防抖函数
    前端面试题
    (八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf)
  • 原文地址:https://www.cnblogs.com/whkzm/p/12088765.html
Copyright © 2011-2022 走看看