drf初识(代码片段)

shenblog shenblog     2023-05-01     181

关键词:

drf:Django-restframework

接口

规定了提交请求参数的请求方式,访问其可以获取响应的反馈数据的url链接;

url链接:请求方法+请求参数+响应数据结果;

drf框架安装

# 使用drf时,要在settings中注册
pip install djangorestframework

restful接口规范

URL设计

数据的安全保障

url链接一般采用https协议进行传输,可以提高数据交互过程中的安全性;

接口特征表现

用api关键字标识接口url,代表该请求url链接是完成前后台数据交互的;

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

多数据版本共存

在url链接中标识数据版本(只有在一种数据资源有多版本的情况下);

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

资源

接口一般都是完成前后台数据的交互,交互的数据称之为资源;

一般提倡用资源的复数形式,在url链接中尽量不要出现操作资源的动词

资源操作由请求方式决定

get/post/put/patch/delete
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-value键值对,put请求提供的字典必    须全包含,但是patch提供的字典包含的键值对0~5个都可以
            
delete:删除单个或多个资源
    - https://api.baidu.com/books/
    多删,提供多个资源主键数据,完成群删,不做任何资源返回(一般我们会返回结果信息:成功|失    败)
    - https://api.baidu.com/books/(pk)/
    单删,不需要提供额外数据,完成单删,不做任何资源返回(一般我们会返回结果信息:成功|失败)

响应状态码

正常响应

2XX

200:常规请求
201:创建成功

重定向响应

3XX

301:永久重定向
302:暂时重定向

客户端异常

4XX

403:请求无权限
404:请求路径不存在
405:请求方法不存在

服务器异常

5XX

500:服务器异常

响应结果

  • 响应数据要有状态码、状态信息和数据本身

    
        "status": 0,
        "msg": "ok",
        "results":[
            
                "name":"肯德基(罗餐厅)",
                "location":
                    "lat":31.415354,
                    "lng":121.357339
                ,
                "address":"月罗路2380号",
                "province":"上海市",
                "city":"上海市",
                "area":"宝山区",
                "street_id":"339ed41ae1d6dc320a5cb37c",
                "telephone":"(021)56761006",
                "detail":1,
                "uid":"339ed41ae1d6dc320a5cb37c"
            
            ...
            ]
    
  • 需要url请求的资源需要访问资源的请求链接

    
        "status": 0,
        "msg": "ok",
        "results":[
            
                "name":"肯德基(罗餐厅)",
                "img": "https://image.baidu.com/kfc/001.png"
            
            ...
            ]
    

postman的安装

安装链接

YAPI的使用

[网页链接](http://yapi.demo.qunar.com//)

操作

drf——认证(代码片段)

drf认证官网地址:https://www.django-rest-framework.org/api-guide/requests/1.drf的执行流程与源码剖析fromrest_framework.viewsimportAPIViewclassStudentView(APIView):defget(self,request,*args,**kwargs):pass说明:图片上的settings 查看详情

2.drf入门(代码片段)

drf介绍DjangoRESTframework(简称:DRF)是一个强大而灵活的WebAPI工具。遵循RESTFullAPI风格,功能完善,可快速开发API平台。官网文档:https://www.django-rest-framework.orgDjangoRESTframework最新版使用要求:Python(3.6、3.7、3.8、3.9、3.10)Django(2.2、3.0、3.1... 查看详情

drf路由(代码片段)

"在urls.py文件中按照如下步骤写,即可正确使用DRF的内置路由.from.viewsimportBookModel#1.导入我们的视图fromrest_framework.routersimportDefaultRouter#2.导入rest_framework内置的路由方法router=DefaultRouter()#3.首先,实例化一个DefaultRouter对象router 查看详情

drf缓存解决方案drf-extensions/redis(代码片段)

drf-extensions概述drf-extensions组件内部提供了DRF 的本地内存方式的缓存方式本地内存方式缓存在项目重启后则会消失官方点击这里  安装pip3installdrf-extensionsorfromgithubpip3installhttps://github.com/chibisov/drf-extensions/archive/maste 查看详情

19-djangorestframework-drf工程搭建(代码片段)

DRF工程搭建前言环境安装与配置安装DRF注册DRF应用DRF体验1.创建序列化器2.编写视图3.定义路由4.运行测试前言本篇来学习DRF工程搭建及体验环境安装与配置DRF需要以下依赖:Python(2.7,3.4,3.5,3.6,3.7)Django(1.11,2.0,2.1)DRF是以Django扩展... 查看详情

drf-分页(代码片段)

目录一、三种分页模式1PageNumberPagination2LimitOffsetPagination3CursorPagination二、继承APIView的视图类下写分页一、三种分页模式1PageNumberPaginationfromrest_framework.paginationimportPageNumberPagination,LimitOffsetPagination,Curs 查看详情

drf序列化(代码片段)

一、安装Django RESTframework框架使用命令:pipinstalldjangorestframework二、在setings里面注册INSTALLED_APPS=["rest_framework"]Serializers序列化组件 查看详情

drf分页器(代码片段)

drf分页器1.第一种分页:类似于django中的分页2.第二种分页:偏移分页3.第三种分页:加密分页(查询速度快)无法跳跃基本参数fromrest_framework.paginationimportPageNumberPagination,LimitOffsetPagination,CursorPaginationpage_size#每页显示的数量page_query_param=... 查看详情

drf分页(代码片段)

 restframework中提供三种分页:fromrest_framework.paginationimportPageNumberPagination,LimitOffsetPagination,CursorPagination 全局配置文件:REST_FRAMEWORK=‘PAGE_SIZE‘:21.分页,看第n页,每页显示n条数据例如:http://127.0.0. 查看详情

drf之分页器(代码片段)

一、简介:drf内置了三种分页器类,一般需要重写类继承默认的分页器类来定制属性的具体数值。二、PageNumberPagination  1、路径:rest_framework.pagination.PageNumberPagination。  2、重写类:classNewPageNumberPagination(PageNumberPagination):page... 查看详情

12.drf-节流(代码片段)

Djangorestframework源码分析(3)----节流添加节流自定义节流的方法限制60s内只能访问3次(1)API文件夹下面新建throttle.py,代码如下:#utils/throttle.pyfromrest_framework.throttlingimportBaseThrottleimporttimeVISIT_RECORD=#保存访问记录classVisitThrottl 查看详情

drf框架(代码片段)

DRF框架知识总览一、接口(api):什么是接口接口文档接口规范二、FBV=>CBV:Function|ClassBaseViewCBV的请求生命周期CBV比FBV的优势三、drf框架的基础试图类APIView:请求模块、解析模块、渲染模块、响应模块、异常模块四、drf核心组件... 查看详情

drf之jwt补充(代码片段)

DRF之JWT补充1.JWT控制用户登录后才能反问,匿名用户无法访问classQueryUserView(GenericViewSet,RetrieveModelMixin):"""查询接口"""queryset=User.objects.all()serializer_class=UserSerializerpk=None#thrott 查看详情

drf-路由和认证(代码片段)

drf-路由目录drf-路由1路由1.1路由router的使用1.2action的使用2认证2.1认证的写法2.2源码分析2.3认证组件的使用1路由针对视图集ViewSet,我们出来可以自己手动指明请求方式与执行函数间的对应关系,还可以使用Routers来快速实现路由... 查看详情

drf-解析器组件(代码片段)

DRF之解析器组件引入DjangoRestFramework帮助我们实现了处理application/json协议请求的数据,另外,我们也提到,如果不使用DRF,直接从request.body里面拿到原始的客户端请求的字节数据,经过decode,然后json反序列化之后,也可以得到一... 查看详情

drf概述(代码片段)

DRF概述一.REST1.什么是编程?数据结构和算法的结合2.什么是REST?回顾曾经做过的图书管理系统,我们是这样设计URL的:  127.0.0.1:9001/books/  127.0.0.1:9001/get_all_books/访问所有的数据127.0.0.1:9001/books/id/127.0.0.1:9001/books/id?method=get访问单... 查看详情

13.drf-版本(代码片段)

Djangorestframework源码分析(4)----版本版本新建一个工程Myproject和一个app名为api(1)api/models.pyfromdjango.dbimportmodelsclassUserInfo(models.Model):USER_TYPE=((1,‘普通用户‘),(2,‘VIP‘),(3,‘SVIP‘))user_type=models.IntegerFiel 查看详情

drf入门规范(代码片段)

DRF简介DjangoRest_Framework"""核心思想:缩减编写api接口的代码DjangoRESTframework是一个建立在Django基础之上的Web应用开发框架,可以快速的开发RESTAPI接口应用。在RESTframework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化... 查看详情