2020-02-19 django rest framework(Drf)

一、前后端分离介绍

前提:基于Python、Django基础,环境配置

        Django框架 

                       - 模板语言开发(前后端不分离)

        前后端不分离: 耦合度比较高

        前后端分离(返回Json或xml数据):

                   耦合度比较低

                   后端:提供数据、接口

                   前端:对接接口、展示数据

前后端分离(优点):

        多端适应

        开发效率提高

        前后端开发职责清晰

        前后端开发语言不需相同

        前后端部署在个自服务器上,服务器压力减小

 前后端分离(缺点):

        前端程序员开发量增加

        后端程序员需要写一个详细文档 

        SEO难度增加(都是AJAX,像一些初级爬虫全部挡在外面,比如一些搜索引擎,这样你的排名下降)

二、RESTful Api设计(规范)

        一个视图对应一个api(接口)

    1、域名(url)

        api尽量部署在专属域名下            

                    https://api.xxx.com(跨域问题)

        api简单,不会再有扩展,可以放在主域名下

                    https://xxx.com./api

    2、协议: 推荐使用HTTPS

    3、版本: (API版本号应该放入URL)

                    5000用户 ---6.0版本  2500用户 ---7.0版本       

                    https://xxx.com/api/v1.0 (返回1.0数据)        https://xxx.com/api/v2.0 (返回2.0数据)

    4、路径: (推荐使用名词+复数)

                    https://xxx.com/apples (获取所有苹果)

                    https://xxx.com/apples/1 (获取id为1的苹果)

    5、HTTP请求方法

                    数据的元操作CRUD(create、read、update、delete)

                    GET: 获取资源  POST: 新增资源        PUT: 更新(全部)资源 

                    PATCH: 选择性更新        DELETE: 删除资源   

    6、信息(分页page)

                    https://xxx.com/apples/?page=2

    7、状态码

                    200 成功返回    201 创建、修改成功

                    403 禁止访问    404 未找到    405 方法不允许 

                    500 服务器错误

     8、错误处理

     9、返回数据: 返回json数据

三、Django REST framework框架(DRF)

            官方文档https://www.django-rest-framework.org/

            源码地址https://github.com/encode/django-rest-framework/tree/master

            安装pip install -i https://pypi.douban.com/simple djangorestframework==3.8.2

四、使用Django REST framework框架(DRF)

 序列化:

        把数据类型(例如字典)转换成可传输的数据的过程

反序列化:

        把可传输的数据转换成数据类型的过程叫做反序列化

    小组、学生 之间的关系(一对多)

五、普通序列化  

            1、把模型数据转换为可传输的json数据

            2、把可传输的json数据转换为模型数据

            可以帮助我们验证数据的完整性(是否正确)

你可能感兴趣的:(2020-02-19 django rest framework(Drf))