Django restframework 版本

我们开发api时可能会有多个版本迭代,因此我们要进行版本控制。

restframework配置分为三步:

在url中使用version, 

视图函数中指定versiong_class ,

settings中加allowed_version

它的流程如下:

在restframework中存在多个版本控制的类:

class AcceptHeaderVersioning(BaseVersioning):
    invalid_version_message: str = ...

class URLPathVersioning(BaseVersioning):
    invalid_version_message: str = ...

class NamespaceVersioning(BaseVersioning):
    invalid_version_message: str = ...
    def get_versioned_viewname(self, viewname: str, request: Request) -> str: ...

class HostNameVersioning(BaseVersioning):
    hostname_regex: Pattern = ...
    invalid_version_message: str = ...

class QueryParameterVersioning(BaseVersioning):
    invalid_version_message: str = ...

其中最常见的是URLPathVersioning,即在url中显示版本,控制版本

# 127.0.0.1:8000/api/v1/article/

其中的v1指的即是版本v1,和restframework中的其它类一样,它可以单独为某个视图加上,也可以全局配置,建议全局配置。在settings中

REST_FRAMEWORK = {
    'DEFAULT_VERSIONING_CLASS': "rest_framework.versioning.URLPathVersioning",
    "ALLOWED_VERSIONS": ['v1', ],
    "VERSION_PARAM": 'version',
}

这样即完成了全局配置,当然也可以在某个视图函数中指定版本控制:

class OrderView(APIView):
    versioning_class = URLPathVersioning

    def get(self,*args ,**kwargs):
        pass

 

上一篇:Django restframework 筛选

下一篇:Django restframework 认证