![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Restful
文章平均质量分 55
weixin_40226313
这个作者很懒,什么都没留下…
展开
-
Restful设计风格与方法
RESTful设计方法1. 域名应该尽量将API部署在专用域名之下。https://api.example.com如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。https://example.org/api/2. 版本(Versioning)应该将API的版本号放入URL。http://www.example.com/app/1.0/foohttp://www.example.co...原创 2018-06-27 17:23:09 · 213 阅读 · 0 评论 -
异常处理 Exceptions
异常处理 ExceptionsREST framework提供了异常处理,我们可以自定义异常处理函数。from rest_framework.views import exception_handlerdef custom_exception_handler(exc, context): # 先调用REST framework默认的异常处理方法获得标准错误响应对象 respon...原创 2018-06-28 14:35:46 · 581 阅读 · 0 评论 -
排序与分页Pagination
排序对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序。使用方法:在类视图中设置filter_backends,使用rest_framework.filters.OrderingFilter过滤器,REST framework会在请求的查询字符串参数中检查是否包含了ordering参数,如果包含了ordering参数,则按照...原创 2018-06-28 14:35:16 · 2322 阅读 · 0 评论 -
过滤Filtering
过滤Filtering对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。pip insall django-filter在配置文件中增加过滤后端的设置:INSTALLED_APPS = [ ... 'django_filters', # 需要注册应用,]REST_FRAMEWORK = { 'DEFAULT_FILT...原创 2018-06-28 14:34:10 · 208 阅读 · 0 评论 -
限流Throttling
限流Throttling可以对接口访问的频次进行限制,以减轻服务器压力。使用可以在配置文件中,使用DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES进行全局配置,REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.AnonRat...原创 2018-06-28 14:33:42 · 395 阅读 · 0 评论 -
权限Permissions
权限Permissions权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。在执行视图的dispatch()方法前,会先进行视图访问权限的判断在通过get_object()获取具体对象时,会进行对象访问权限的判断使用可以在配置文件中设置默认的权限管理类,如REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'res...原创 2018-06-28 14:32:59 · 2637 阅读 · 0 评论 -
认证Authentication
认证Authentication可以在配置文件中配置全局默认的认证方案REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', # 基本认证 'rest_framework.authenticati...原创 2018-06-28 14:32:36 · 475 阅读 · 0 评论 -
DRF路由Routers
路由Routers对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。REST framework提供了两个routerSimpleRouterDefaultRouter1. 使用方法1) 创建router对象,并注册视图集,例如from rest_framework import routersro...原创 2018-06-28 14:32:08 · 1877 阅读 · 0 评论 -
视图基类与五个扩展类
视图说明1. 两个基类1)APIViewrest_framework.views.APIViewAPIView是REST framework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返回REST framework...原创 2018-06-27 17:35:53 · 758 阅读 · 0 评论 -
View视图预览(要熟悉理解)
视图概览REST framework 提供了众多的通用视图基类与扩展类,以简化视图的编写。视图的继承关系:视图的方法与属性:原创 2018-06-27 17:34:58 · 393 阅读 · 0 评论 -
DRF视图中的Request 与 Response请求
Request 与 Response1. RequestREST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单...原创 2018-06-27 17:31:02 · 2366 阅读 · 1 评论 -
模型类序列化器
模型类序列化器ModelSerializer如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段基于模型类自动为Serializer生成validators,比如unique_togeth...原创 2018-06-27 17:29:47 · 1572 阅读 · 2 评论 -
反序列化使用
反序列化使用1. 验证使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。在获取反序列化的数据前,必须调用is_valid()方法进行验证,验证成功返回True,否则返回False。验证失败,可以通过序列化器对象的errors属性获取错误信息,返回字典,包含了字段和字段的错误。如果是非字段错误,可以通过修改REST framework配置中的NON_FIEL...原创 2018-06-27 17:29:09 · 559 阅读 · 0 评论 -
序列化器使用
Django课程讲义序列化使用我们在django shell中来学习序列化器的使用。python manage.py shell1 基本使用1) 先查询出一个图书对象from booktest.models import BookInfobook = BookInfo.objects.get(id=2)2) 构造序列化器对象from booktest.serializers import Book...原创 2018-06-27 17:28:24 · 499 阅读 · 0 评论 -
Serializer序列化器使用
定义Serializer1. 定义方法Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。例如,我们已有了一个数据库模型类BookInfoclass BookInfo(models.Model): btitle = models.CharField(max_length=20, ...原创 2018-06-27 17:27:32 · 5608 阅读 · 0 评论 -
见识DRF魅力
见识DRF的魅力我们仍以在学习Django框架时使用的图书英雄为案例,使用Django REST framework快速实现图书的REST API。1. 创建序列化器在booktest应用中新建serializers.py用于保存该应用的序列化器。创建一个BookInfoSerializer用于序列化与反序列化。class BookInfoSerializer(serializers.ModelS...原创 2018-06-27 17:26:36 · 300 阅读 · 0 评论 -
DRF框架工程搭建环境
环境安装与配置DRF需要以下依赖:Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)Django (1.10, 1.11, 2.0)DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)1. 安装DRFpip install djangorestframework2. ...原创 2018-06-27 17:25:46 · 449 阅读 · 0 评论