如何正确组织REST-API版本控制?

Mad*_*di7 2 django rest django-rest-framework

我正在Django-REST-FrameWork上构建网站的后端,目前我具有以下结构(以下显然只是其中的一部分):

project_root:
    apps:
        app1:
            models.py
            serializers.py
            views.py
            urls.py
        app2:
            models.py
            serializers.py
            views.py
            urls.py
    urls:
        urls.py - (Main project urls file)
Run Code Online (Sandbox Code Playgroud)

端点:

http://localhost:8000/api/app1/
http://localhost:8000/api/app2/
Run Code Online (Sandbox Code Playgroud)

如何添加版本控制?我应该为每个应用程序添加一个“ v2”文件夹吗?

Muh*_*san 5

对于api的每个新版本,都应urls.py像这样在主文件中添加新的终结点。

url(r'^api/v1.0/app1/', include('app1.urls', namespace='v1.0')),
url(r'^api/v1.1/app1/', include('app1.urls', namespace='v1.1')),

url(r'^api/v1.0/app2/', include('app2.urls', namespace='v1.0')),
url(r'^api/v1.2/app2/', include('app2.urls', namespace='v1.1')),
Run Code Online (Sandbox Code Playgroud)

您应该在restframework设置中添加它。

'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning'
Run Code Online (Sandbox Code Playgroud)

您可以通过在视图中访问当前版本request.version