• DRF之接口概述(一)


    DRF框架知识总览

    '''
    1.什么是接口(api):
    	什么是接口
    	接口文档
    	接口规范
    
    2.FBV => CBV:Function|Class Base View
    	CBV的请求生命周期
    	CBV比FBV的优势
    
    3.drf框架的基础视图类
    	APIView:请求模块、解析模块、渲染模块、响应模块、异常模块
    
    4.drf核心组件
    	序列化组件:将后台的任何数据,进行序列化返回给前台;将前台的数据反序列化后台model对象再入库。
    	
    5.群查接口相关组件:
    	搜索、筛选、排序、分页
    
    目的:
    	掌握六大基础接口- 单查、群查、单增、单局部改、单整体改、单删
    	一共十大接口:群增、群局部改、群整体改、群删
    
    '''
    

    接口

    '''
    接口概念:前后台进行数据交互的媒介--url链接
    
    接口组成:
    	url链接 - 唱得像返回数据的url链接
    	请求方式 - get(查)、post(增)、put(整体改)、patch(局部改)、delete(删)
    	请求参数 - 拼接参数、数据包参数(urlencoded、form-data、json)
    	响应结果 - 响应的json数据
    '''
    

    开发阶段接口测试工具

    '''
    Postman:
    	官网下载、直接安装
    '''
    

    接口文档

    """
    1)为什么要写接口文档
       为什么要写接口:作为后台开发者,要将后台数据通过url链接反馈给前台
       为什么要写文档:作为后台开发者,一定知道改url链接应该采用什么请求方式、提交哪些数据、返回了哪些结果
    就像后台要将url链接改前台一样,前台知道应该访问什么链接,所以前台也应该知道采用什么请求方式,以及提交什么数据。
       换而言之,接口文档是给 后台开发者、前台开发者、测试等各个项目相关项目组同时查看的,方便团队开发(规则是后台指定的,文档后台来写)
       
    2)编写文档
       i)采用word编写
       ii)drf框架有插件,可以根据cbv的类快速生成文档
       iii)采用写文档的平台
       
    3)书写过程
       i)先安装开发需要,完成接口的开发(设置后台url链接,设置请求方式、请求数据、响应结果)
       ii)选择一个接口平台,将后台url链接,设置请求方式、请求数据、响应结果信息变成成文档即可
    """
    

    接口规范

    '''
    1.为什么要指定接口规范
    	在前后台分离情况下,后台可以采用不同的后台运用,开发出类似的功能,所以前后台请求响应的规则是一致的;如果按照一套标准来编写接口,后台不管是什么语言,前台都可以采用一样的方式进行交互。反过来,后台也不需要管前台到底采用何种方式请求(页面、工具、代码)
    
    2.通用的接口规范:Restful接口规范 - 规定了url如何编写;请求方式的含义;响应的数据规则
    	- url编写
    		- https协议 - 保证数据安全
    		- api字眼 - 标识操作的是数据
    		- v1、v2字眼 - 数据的不同版本共存
    		- 资源复数 - 请求的数据称之为资源
    		- 拼接条件 -过滤群查接口的数据(https://api.baidu.com/books/?limit=3&ordering=-price)
    	
    	- 请求方式
    		/books/ -get 群查
    		/books/(pk)/ - get 单查
    		/books/ -post - 单增
    		/books/(pk)/ put - 单整体改
    		/books/(pk)/ patch - 单局部改
    		/books/(pk)/ delete - 单删
    	
    	- 响应结果
    		网络状态码与状态信息:2xx | 3xx | 4xx | 5xx
    		数据状态码:前后台约定规则 - 0成功 1失败 2成功但无结果
    		数据状态信息:自定义成功失败的信息解释
    		数据本体:json数据
    		数据子资源:头像、视频等、用资源的url链接
    '''
    

    CVB和FBV的比较

    '''
    1.路由绑定
    urlpatterns = [
        # 1)项目启动,将test函数地址绑定给/test/路由
        # 2)请求/test/访问后台,后台就会调用绑定的test函数	
    	url(r'^test/$',views.test),
    ]
        # 1)项目启动,将as_view()函数执行结果返回的view函数地址绑定给/test/路由
        # 2)请求/test/访问后台,后台就会调用绑定的view函数
        # 3)view函数会将请求交给dispatch方法完成分发,分发(反射)给视图类的不同方法处理请求
        url(r'^test/$', views.Test.as_view()),
    
    2.业务处理
    	fbv每一个接口都会对应一个函数来响应请求
    	cbv可以将一个资源的增删改查所有操作放在一个类中管理,在内部再分方法逐一处理(高内聚低耦合:类内部聚合了6个接口,但对外只开放一个类的as_view)。
    
    -------------------------------------------------------------
    三个View其实是同一个类
    继承View的目的:
    	i)继承as_view()方法,完成路由的配置
    	ii)继承dispath()方法,完成请求分发
    	注:如果自己写as_view()和dispath()方法,自定义视图类可以不用继承任何类的
    from django.http import JsonResponse
    from django.views import View
    from django.views.generic import View
    from django.views.generic.base import View
    class Test(View):  
        def get(self, request, *args, **kwargs):
            return JsonResponse('cbv ok', safe=False)
    '''
    

    永久配置安装源

    Windows
    """
    1、文件管理器文件路径地址栏敲:%APPDATA% 回车,快速进入 C:Users电脑用户AppDataRoaming 文件夹中
    2、新建 pip 文件夹并在文件夹中新建 pip.ini 配置文件
    3、新增 pip.ini 配置文件内容
    """
    
    MacOS、Linux
    """
    1、在用户根目录下 ~ 下创建 .pip 隐藏文件夹,如果已经有了可以跳过
    	-- mkdir ~/.pip
    2、进入 .pip 隐藏文件夹并创建 pip.conf 配置文件
    	-- cd ~/.pip && touch pip.conf
    3、启动 Finder(访达) 按 cmd+shift+g 来的进入,输入 ~/.pip 回车进入
    4、新增 pip.conf 配置文件内容
    """
    
    配置文件内容
    """
    [global]
    index-url = http://pypi.douban.com/simple
    [install]
    use-mirrors =true
    mirrors =http://pypi.douban.com/simple/
    trusted-host =pypi.douban.com
    """
    

    DRF框架的安装

    """
    1)安装
    >: pip install djangorestframework
    
    2)在settings中注册
    INSTALLED_APPS = [
        # ...
        'rest_framework',
    ]
    
    3)在settings中自定义drf配置
    注:drf配置查找顺序,自定义settings的REST_FRAMEWORK配置字典 => drf默认settings的DEFAULTS
    REST_FRAMEWORK = {}
    
    4)drf的封装特点:特点功能在特点模块下
    from rest_framework.views import APIView
    from rest_framework.response import Response
    from rest_framework.request import Request
    """
    

    图书资源准备

    """
    1)在models.py创建Model类
    from django.db import models
    class Book(models.Model):
        name = models.CharField(max_length=64, verbose_name='书名')
        price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='价格')
    
        # 配置类
        class Meta:
            verbose_name_plural = '图书'
    
        def __str__(self):
            return self.name
            
    2)在admin.py中注册Model类,方便在后台(admin)可视化管理数据
    from django.contrib import admin
    from . import models
    admin.site.register(models.Book)  # admin要控制的model都需要注册一下
    
    3)数据库迁移操作
    >: python manage.py makemigrations
    >: python manage.py migrate
    >: python manage.py createsuperuser
    	admin | Admin123
    	
    4)浏览器登录admin录入数据:http://localhost:8000/admin
    """
    

    基于restful接口规范的接口设计

    urlpatterns = [
        # 资源books接口的设计
        url(r'^books/$', views.BookAPIView.as_view()),  # 群查、单增
        url(r'^books/(?P<pk>d+)/$', views.BookAPIView.as_view()),  # 单查、单删、单(整体|局部)改
    ]
    
  • 相关阅读:
    微信小程序保存图片功能实现
    小程序清除缓存功能如何实现
    小程序自定义函数—数字千位转换
    小程序身份证号检测函数
    小程序 的 textarea 组件 层级问题如何解决
    Markdown 语法背一下咯
    跨域了解一下?
    sort命令的k选项大讨论【转】
    Shell脚本中实现切换用户并执行命令操作【转】
    Ansible Tower系列 四(使用tower执行一个命令)【转】
  • 原文地址:https://www.cnblogs.com/Ghostant/p/12331701.html
Copyright © 2020-2023  润新知