day-81drf

element-ui(vue上的bootstrap)

eu:

 书写特定的组件标签构建特点的结构样式

安装:

  项目目录下的终端

   cnpm i element-ui -S

main.js引入:

  import ElementUI from 'element-ui';

  import 'element-ui/lib/theme-chalk/index.css';

  Vue.use(ElementUI);

使用:

  官方API

  https://element.eleme.cn/#/zh-CN/component/installation

web接口

什么叫接口:

  通过url链接来进行前台访问后台,期间url需要传递必须和可选参数,最后来获得想要数据

接口的特点:

  不返回页面,只返回数据

web接口规范(RESTful规范)

  规范规定了两部分:

    1、url链接应该怎么写

    2、返回的数据格式如何写

1)通常使用https请求                #url数据更安全

2)链接会出现api字眼                #得到的是数据,不是页面

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

3)版本:不同版本需要标注             #接口迭代出现多版本共存

    https://api.baidu.com/v1
    https://api.baidu.com/v2

4)资源:请求的目标数据称之为资源,单资源采用资源名称名词,多资源采用资源名称名词的复数

    https://api.baidu.com/v2/book | https://api.baidu.com/v2/books
    https://api.baidu.com/book | https://api.baidu.com/books

5)请求方式:通过请求的方式决定操作方式

    -- get:https://example.com/api/v1/books  获取所有
    -- get:https://example.com/api/v1/book/1  获取id=1一本
    -- post:https://example.com/api/v1/book  新增一本
    -- put:https://example.com/api/v1/book/1  更新id=1的一本
    -- patch:https://example.com/api/v1/book/1  更新id=1的一本
    -- delete:https://example.com/api/v1/book/1  删除id=1的一本
    
6)资源过滤:通过接口传递参数来过滤资源 - limit|ordering|page

    -- https://example.com/api/v1/books?limit=10  限制10条
    
7)数据状态码:返回数据要标准状态码,通过在数据中 {"status": 0}         #注:数据状态码都是约定的(不是死的)

    -- SUCCESS("0", "查询成功")
    -- NODATA("1", "非正确,无数据,显示基本信息")
    -- FEAILED("2", "查询失败")
    
8)错误信息:请求失败需要标注错误信息 - {"error": "错误信息"} => {"msg": "数据状态描述信息"}

9)数据(操作的资源返回结果):{"results": []} | {"data": []} | {"token": "*"}

    -- get:返回资源列表 | 返回单一资源
    -- post:返回单一新增资源
    -- put:返回更新的资源
    -- patch:返回更新的资源
    -- delete:返回空文档

10) 子资源返回资源接口:返回的资源如果有子资源,返回子资源的链接地址,如查找书,书的封面图片就可以url表示

 

drf框架(Django REST Framework)

  drf是django写满足restful规范接口的一个插件

安装:

  >: pip3 install djangorestframework

配置:settings.py
  REST_FRAMEWORK = {
    # 自定义配置
  }

drf源码解析

from rest_framework.views import APIView
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.viewsets import ViewSet, ModelViewSet
from rest_framework.exceptions import APIException
from rest_framework.pagination import PageNumberPagination


# APIView类(重写原生view的方法)

# as_view(): 
    #就干了一件事:禁用了csrf中间件的安全认证
# dispatch():
#   1) 二次封装request对象,将原wsgi的request对象保留至 _request 中
#   2) 将数据包中的数据解析到request.data,将url链接?后的数据解析到request.query_params
#   3) drf的三大认证
#   4) 二次处理响应对象response在返回

class User(APIView):
    def get(self, request, *args, **kwargs):
        data_dic = {
            'status': 0,
            'msg': 'get ok',
            'results': {

            }
        }
        return Response(data_dic)

    def post(self, request, *args, **kwargs):
    
        a = request.query_params.get('a')
        x = request.data.get('x')
        print(a, x)
        
        data_dic = {
            'status': 0,
            'msg': 'post ok',
            'results': {

            }
        }
        return Response(data_dic)
原文地址:https://www.cnblogs.com/klw1/p/11346886.html