我使用drf-yasg生成一个Swagger模式,但它删除了url的“API/”部分。
schema_view = get_schema_view(
openapi.Info(
title="My API",
default_version='v1',
description="...",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="hello@mycompany.com"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=[permissions.AllowAny],
)
router = routers.DefaultRouter()
router.register(r'spaces', SpacesViewSet, basename='spaces')
urlpatterns = [
url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
path('api/', include(router.urls)),
path('api/search-options', SearchPlacesOptionsView.as_view()),
]
result on /swagger
正如你所看到的,来自drf路由器的路由不包括url的/API部分。然而,对于常规的API/search-options端点,它也删除了/api部分,所以我不认为它与路由器有关。
1条答案
按热度按时间ehxuflar1#
我也有同样的问题,但没有人回答这个问题,所以我修复了它,我要与你分享我想这个问题的发生是因为他们在他们的包(drf_yasg)中有很多变化。
你应该覆盖OpenAPISchemaGenerator的get_paths()方法,并对其进行一些修改,
drf_yasg类中的原始OpenAPISchemaGenerator:
在我的应用程序中重写OpenAPISchemaGenerator CustomizedOpenAPISchemaGenerator类:
我只替换这个:
用这个:
之后,你应该将这个新的生成器类路径到你的swagger配置,要做到这一点,你有两个选择:
1:使用django设置文件: