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应全为小写字母,短语单词使用“-”分隔。

django-rest-framework --- 基础简介的更多相关文章

  1. Django rest framework 基础

    01: Django rest framework 基础 ​ ​ 1.1 什么是RESTful 1. REST与技术无关,代表的是一种软件架构风格(REST是Representational Stat ...

  2. Django REST framework基础:视图和路由

    DRF中的Request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别于Dj ...

  3. Django Rest framework基础使用之 serializer

    rest-framework文档地址:http://www.django-rest-framework.org/ Django Rest framework是一个非常强大且灵活的工具包,用于构建web ...

  4. Django Rest framework基础使用之View:APIView, mixins, generic, viewsets

    先看一张图,对DRF的各个APIView,Mixin,Viewset等有个基本印象: 具体使用方法: 1.APIView: DRF 的API视图 有两种实现方式: 一种是基于函数的:@api_view ...

  5. Django Rest framework基础使用之Request/Response

    1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpReque ...

  6. 01: Django rest framework 基础

    1.1 RESTful API设计规范 参考地址: http://www.cnblogs.com/wupeiqi/articles/7805382.html   1.API与用户的通信协议,总是使用H ...

  7. Django REST framework基础:解析器和渲染器

    解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...

  8. Django REST framework基础:认证、权限、限制

    认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...

  9. Django REST framework基础:分页

    DRF分页组件 为什么要使用分页 我们数据表中可能会有成千上万条数据,当我们访问某张表的所有数据时,我们不太可能需要一次把所有的数据都展示出来,因为数据量很大,对服务端的内存压力比较大还有就是网络传输 ...

  10. Django REST framework基础:版本、认证、权限、限制

    1  认证.权限和限制 2  认证 2.1  自定义Token认证 2.1.1  表 2.1.2  定义一个登录视图: 2.1.3  定义一个认证类 2.1.4  视图级别认证 2.1.5  全局级别 ...

随机推荐

  1. kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较

    ingress controller在物理机上的两种部署方式 ingress controller(ingress-nginx)负责k8s中的7层负载均衡.其在物理机中有多种部署方式.本文中主要选择了 ...

  2. libevent实现TCP 服务端

    libevent实现Tcp Server基于bufferevent实现 /******************************************************** Copyri ...

  3. VC++操作注册表(创建,读取,更改,删除)

    #include "stdafx.h" #include <Windows.h> #include <iostream> using namespace s ...

  4. Qt程序开机自动运行

    一.写入注册表需要管理员权限 1.开发中生成并运行程序需要写入注册表时,应该以管理员权限打开项目: 2.点击程序运行需要写入注册表,则应该以管理员权限打开此程序. 二.实现 void MoreSetW ...

  5. python学习-45 模块

    模块 -----模块包括三种: ····python标准库 ····第三方模块 ····应用程序自定义模块 -------应用程序自定义模块 1.建立两个py文件,一个是定义函数用的cal.py de ...

  6. 硬件实现IIC协议读取EEPROM

    我TMD也是服了,反正我板子搞了半天也不成功我也不知道为什么,野火STM32-MINI,一直卡EV5,不管了 先代码沾上 工程目录(板子为野火STM32 MINI) 串口相关代码: bsp_usart ...

  7. ASP.NET Core启动流程

    1. 引言 对于ASP.NET Core应用程序来说,我们要记住非常重要的一点是:其本质上是一个独立的控制台应用,它并不是必需在IIS内部托管且并不需要IIS来启动运行(而这正是ASP.NET Cor ...

  8. shell习题第25题:判断是否开启web服务

    [题目要求] 写一个脚本判断我的linux服务器是否开启web服务?监听80端口 [核心要点] netstat -lntp | grep '80' [脚本] #!/bin/bash n=`netsta ...

  9. 2019牛客多校三 A. Graph Games (图分块)

    大意: 给定无向图, 定义$S(x)$为$x$的邻接点集合. 每次操作翻转$[L,R]$范围的边, 询问$S(x)$与$S(y)$是否相等. 快速判断集合相等可以用$CF 799F$的技巧. 采用$h ...

  10. poj 1837 天平问题(01背包变种)

    题意:给你n个挂钩,m个砝码,要求砝码都用上,问有多少中方案数 题解:对于这道题目的状态,我们定义一个变量j为平衡度,当j=0的时候,表明天平平衡.定义dp[i][j]表达的含义为使用前n个砝码的时候 ...