码迷,mamicode.com
首页 > 其他好文 > 详细

rest framework-版本-长期维护

时间:2020-02-11 10:05:53      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:models   rest   api   不同   注意   问题   bsp   framework   att   

###############  版本   ###############

# 
# 版本的问题:
# rest_framework.versioning.URLPathVersioning
# 一般就是这种,http://127.0.0.1:8000/api/v2/course/
# 只要配置好了,以后就很少动了,
# 原理要知道
# 使用:
# 1,添加配置,
# 2,设置路由,
# 3,获取版本,

 

############### 全局配置  注意,通常我们是不会单独给某个视图设置版本控制的 ###############

settings.py中

REST_FRAMEWORK = {
    ...
    DEFAULT_VERSIONING_CLASS: rest_framework.versioning.URLPathVersioning,
    DEFAULT_VERSION: v1,  # 默认的版本
    ALLOWED_VERSIONS: [v1, v2],  # 有效的版本
    VERSION_PARAM: version,  # 版本的参数名与URL conf中一致
}

urls.py中

urlpatterns = [
    ...
    url(r^(?P<version>[v1|v2]+)/publishers/$, views.PublisherViewSet.as_view({get: list, post: create})),
    url(r^(?P<version>[v1|v2]+)/publishers/(?P<pk>\d+)/$, views.PublisherViewSet.
as_view({get: retrieve, put: update, delete: destroy})), ]

我们可以在视图中自定义具体的行为,下面以不同的版本返回不同的序列化类为例

class PublisherViewSet(ModelViewSet):

    def get_serializer_class(self):
        """不同的版本使用不同的序列化类"""
        if self.request.version == v1:
            return PublisherModelSerializerVersion1
        else:
            return PublisherModelSerializer
    queryset = models.Publisher.objects.all()

 

###############  版本   ###############

 

###############  版本   ###############

 

###############  版本   ###############

rest framework-版本-长期维护

标签:models   rest   api   不同   注意   问题   bsp   framework   att   

原文地址:https://www.cnblogs.com/andy0816/p/12293738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!