首页 > 解决方案 > 将多个 swagger 文档(来自不同应用程序)合并到一个 swagger 仪表板 [drf_yasg]

问题描述

如果我有 5 个应用程序(django)和各自的 swagger 文档,是否可以将所有 swagger 文档合并为一个 swagger 文档。我正在使用 django 休息框架。

标签: pythondjangoswaggeropenapidrf-yasg

解决方案


我假设您的意思是在一个 Django 项目中包含 5 个 Django 应用程序。在这种情况下,是的,您可以,而且非常简单。

以下是我通常如何将应用程序组合成一个 urlpattern::

项目/app1/urls.py:

from django.urls import include, path
from rest_framework.routers import SimpleRouter
from .views import MyModelViewSet, MyClassBasedModelView, my_function_based_model_view

api_router = SimpleRouter()
api_router.register(r"somepattern", MyModelViewSet)
api_urlpatterns = [
    path("", include(api_router.urls)),
    path("someotherpattern", MyClassBasedModelView.as_view()),
    path("yetanotherpattern", my_function_based_view),
]

对每个应用程序中的每个“urls.py”文件执行此操作。然后在主要的“urls.py”(你的设置中引用的那个)做这样的事情:

项目/urls.py:

from app1.urls import api_urlpatterns as app1_api_urlpatterns
from app2.urls import api_urlpatterns as app2_api_urlpatterns
# ...etc... 

api_urlpatterns = []
api_urlpatterns += app1_api_urlpatterns
api_urlpatterns += app2_api_urlpatterns

urlpatterns = [
    path("api/", include(api_urlpatterns)),
    # other (non DRF) views...
]

您只需按照https://drf-yasg.readthedocs.io/en/stable/readme.html#quickstart将标准的drf_yasg内容添加到api_urlpatterns“project/urls.py”中。

希望这可以帮助。


推荐阅读