我们开发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