vue项目和django项目交互补充,drf介绍,restful规范

1、vue项目与django项目的交互

  • vue中的发送ajax请求,其中的参数有:
created() {
            this.$axios({
                url: 'http://127.0.0.1:8000/test/',  // 请求地址
                method: 'post',  // 请求方式
                params: {  // 拼接参数
                    a: 1
                },
                data: {  // data数据包
                    x: 10
                },
                headers: {  // 请求头
                    authorization: 'abc.def.xyz',  // 请求头内容
                    token: 1,
                    owen: 2,
                    // 后台:request.META.get('HTTP_参数名全大写')
                }
            }).then(response => {  // then至关于success , 进行回调函数
                console.log('成功:', response.data)
            }).catch(error => {  // 错误捕捉
                console.log('失败:', error.response.data)  // error.response.data 错误信息
            })
        }

 

  • django后端的request的方法
request.META  # 获取请求头

CORS_ORIGIN_ALLOW_ALL = True  # 容许跨域

CORS_ALLOW_HEADERS = [  # 重写CORS_ALLOW_HEADERS,定义容许访问的请求头,前面的都是系统默认的要再加上
    "accept",
    "accept-encoding",
    "authorization",
    "content-type",
    "dnt",
    "origin",
    "user-agent",
    "x-csrftoken",
    "x-requested-with",

    "token",
    "owen",
]

 

2、drf(Django-restframework)

1. drf主要知识点

一、接口:接口的概念、数据接口文档、接口规范(restful)、Postman接口测试工具 二、drf请求生命周期 - CBV 三、drf的基础组件:请求、响应、渲染、解析、异常 四、drf的序列化(核心):序列化、模型序列化、群操做序列化 五、drf的视图家族:视图类(经常使用)、视图工具类、工具视图类(经常使用)、视图集 六、drf的三大认证(核心):认证、权限、频率 七、drf的过滤:筛选、搜索、排序、分页、区间、自定义

2. drf框架安装

drf框架安装: 1)drf是Django的插件,因此要提早按照Django 2)终端中使用命令:python pip install djangorestframework 3)使用drf时,要在settings中注册

3. web接口(WEB API)

什么是web接口:就是 采用某种请求方式提交请求参数,得到响应数据的 url连接 四部分:url连接 + 请求方式 + 请求参数 + 响应数据 web接口文档的书写:包含一个接口的访问的url连接的格式和须要的请求参数,以及访问后其响应数据。 详情见:https://www.cnblogs.com/xiaoyuanqujing/articles/11869745.html

4. restful接口规范

url连接: 1)接口都是操做先后台数据的,因此须要保证数据的安全性 采用https协议 2)接口用来操做数据,与网址(操做页面)有区别,因此用特定的关键字表示接口 api关键字 - https://api.baidu.com - https://www.baidu.com/api 3)接口操做的数据称之为 资源,在url中只体现 资源 名称(名词),不体现操做资源的方式动词 常规资源接口 - https://api.baidu.com/books/ - https://api.baidu.com/books/(pk)/ 很是规接口 - 和某资源不是特别密切或是不止一种资源 - https://api.baidu.com/login/ - https://api.baidu.com/place/search/ 4)若是一个资源存在多版本结果,在url连接中要用特定符号来兼容多版本共存 v1|v2 - https://api.baidu.com/v1/books/ - https://api.baidu.com/v2/books/ 5)群资源操做,通常还有额外的限制条件,如排序、限制调试、分页等等 ?限制条件 - https://api.baidu.com/v1/books/?ordering=-price&limit=3 请求方式 6)五大请求方式 get:获取单个或多个资源 - https://api.baidu.com/books/ 群查,返回多个结果对象 - https://api.baidu.com/books/(pk)/ 单查,返回单个结果对象 post:新增单个或多个资源(都是一个url) - https://api.baidu.com/books/ 单增,提交单个数据字典,完成单增,返回单个结果对象 群增,提供多个数据字典的数组,完成群增,返回多个结果对象 put:总体修改单个或多个资源 - https://api.baidu.com/books/ 总体修改多个,提供多个数据字典的数组(数据字典中要包含主键),完成群改,返回多个结果对象 - https://api.baidu.com/books/(pk)/ 总体修改单个,提供单个数据字典(主键在url中体现),完成单改,返回单个结果对象 patch:局部修改单个或多个资源 方式与put彻底相同,不一样的是:操做的资源若是有5个key-value键值对,put请求提供的字典必须全包含,可是patch提供的字典包含的键值对0~5个均可以 delete:删除单个或多个资源 - https://api.baidu.com/books/ 多删,提供多个资源主键数据,完成群删,不作任何资源返回(通常咱们会返回结果信息:成功|失败) - https://api.baidu.com/books/(pk)/ 单删,不须要提供额外数据,完成单删,不作任何资源返回(通常咱们会返回结果信息:成功|失败) 响应结果: 7)响应对象中要包含网络状态码(网络状态信息和网络状态码捆绑出现,不要额外设置): 1xx:基本信息 2xx:成功 - 200基本 201新增成功 3xx:重定向 4xx:客户端错误 - 400错误请求;403请求无权限;404请求资源不存在 5xx:服务端错误 - 500服务器错误 8)数据状态码(通常都是先后台约定规则): 0:成功 1:失败 - 1xx:具体失败信息(要在接口文档中明确写出) 2:无数据 - 2xx:具体无数据信息(要在接口文档中明确写出) 9)数据状态信息(通常不单单是对数据状态码的解释,更可能是对结果的描述,给前台开发者阅读的) 10)数据结果(常量、数组、字典),若是有子资源(图片、音频、视频),返回资源的url连接:
{
            "status": 0,
            "msg": 'ok',
            "results": [{
                "name": "西游记",
                "img": "https://api.baidu.com/media/book/xyj.png"
            }]
        }
 

3、django的CBV模型生命周期

  • django后端启动,执行urls文件中的各as_view()方法——》
  • 前端发送请求到后端对应的url——》
  • 后端根据请求方式调用类中对应的方法,再返回处理结果给前端
相关文章
相关标签/搜索