Python 在drf yasg中设置自定义基本路径
我正在使用drf yasg来记录我的API,我有以下设置:Python 在drf yasg中设置自定义基本路径,python,django,django-rest-framework,drf-yasg,Python,Django,Django Rest Framework,Drf Yasg,我正在使用drf yasg来记录我的API,我有以下设置: from django.urls import path from drf_yasg.views import get_schema_view public_schema_view = get_schema_view(..., urlconf='public_apis.urls') private_schema_view = get_schema_view(..., urlconf='private_apis.urls') urlp
from django.urls import path
from drf_yasg.views import get_schema_view
public_schema_view = get_schema_view(..., urlconf='public_apis.urls')
private_schema_view = get_schema_view(..., urlconf='private_apis.urls')
urlpatterns = [
path('public/', public_schema_view.with_ui('swagger', cache_timeout=0), name='schema-public'),
path('private/', private_schema_view.with_ui('swagger', cache_timeout=0), name='schema-private'),
]
注意:分别从模块public\u api.url
和private\u schema\u视图
中重新排序两组不同的URL
这里我想要两个basePath
s
/api/v1/public/
用于public\u schema\u视图
和/api/v1/private/
用于private\u schema\u视图
因此,问题是,如何在中设置多个自定义项?您可以通过重写schema generator类的方法来设置
,并且可以通过使用generator\u类
参数在函数中使用它
架构生成器类可以通过以下方式继承类来创建:
from django.urls import path
from drf_yasg.views import get_schema_view
from drf_yasg.generators import OpenAPISchemaGenerator
class PublicAPISchemeGenerator(OpenAPISchemaGenerator):
def get_schema(self, request=None, public=False):
schema = super().get_schema(request, public)
schema.base_path = '/api/v1/public/'
return schema
class PrivateAPISchemeGenerator(OpenAPISchemaGenerator):
def get_schema(self, request=None, public=False):
schema = super().get_schema(request, public)
schema.base_path = '/api/v1/private/'
return schema
public_schema_view = get_schema_view(...,
urlconf='public_apis.urls',
generator_class=PublicAPISchemeGenerator)
private_schema_view = get_schema_view(...,
urlconf='private_apis.urls',
generator_class=PrivateAPISchemeGenerator)
urlpatterns = [
path('public/', public_schema_view.with_ui('swagger', cache_timeout=0), name='schema-public'),
path('private/', private_schema_view.with_ui('swagger', cache_timeout=0), name='schema-private'),
]
从django.url导入路径
从drf_yasg.views导入get_schema_视图
从drf_yasg.generators导入OpenAPISchemaGenerator
类PublicAPIschemaGenerator(OpenAPISchemaGenerator):
def get_模式(self,request=None,public=False):
schema=super().get_schema(请求,公共)
schema.base_path='/api/v1/public/'
返回模式
类私有ApiSchemeGenerator(OpenAPISchemaGenerator):
def get_模式(self,request=None,public=False):
schema=super().get_schema(请求,公共)
schema.base_path='/api/v1/private/'
返回模式
公共模式视图=获取模式视图(。。。,
urlconf='public_api.url',
发电机(类别=PublicAPISchemeGenerator)
私有模式视图=获取模式视图(。。。,
urlconf='private_api.url',
发电机(类别=PrivateAPISchemeGenerator)
URL模式=[
路径('public/',public_schema_view.with_ui('swagger',cache_timeout=0),name='schema-public'),
path('private/',private_schema_view.with_ui('swagger',cache_timeout=0),name='schema-private'),
]
您可以通过重写schema generator类的方法来设置基本路径
,并且可以使用generator\u类
参数在函数中使用它
架构生成器类可以通过以下方式继承类来创建:
from django.urls import path
from drf_yasg.views import get_schema_view
from drf_yasg.generators import OpenAPISchemaGenerator
class PublicAPISchemeGenerator(OpenAPISchemaGenerator):
def get_schema(self, request=None, public=False):
schema = super().get_schema(request, public)
schema.base_path = '/api/v1/public/'
return schema
class PrivateAPISchemeGenerator(OpenAPISchemaGenerator):
def get_schema(self, request=None, public=False):
schema = super().get_schema(request, public)
schema.base_path = '/api/v1/private/'
return schema
public_schema_view = get_schema_view(...,
urlconf='public_apis.urls',
generator_class=PublicAPISchemeGenerator)
private_schema_view = get_schema_view(...,
urlconf='private_apis.urls',
generator_class=PrivateAPISchemeGenerator)
urlpatterns = [
path('public/', public_schema_view.with_ui('swagger', cache_timeout=0), name='schema-public'),
path('private/', private_schema_view.with_ui('swagger', cache_timeout=0), name='schema-private'),
]
从django.url导入路径
从drf_yasg.views导入get_schema_视图
从drf_yasg.generators导入OpenAPISchemaGenerator
类PublicAPIschemaGenerator(OpenAPISchemaGenerator):
def get_模式(self,request=None,public=False):
schema=super().get_schema(请求,公共)
schema.base_path='/api/v1/public/'
返回模式
类私有ApiSchemeGenerator(OpenAPISchemaGenerator):
def get_模式(self,request=None,public=False):
schema=super().get_schema(请求,公共)
schema.base_path='/api/v1/private/'
返回模式
公共模式视图=获取模式视图(。。。,
urlconf='public_api.url',
发电机(类别=PublicAPISchemeGenerator)
私有模式视图=获取模式视图(。。。,
urlconf='private_api.url',
发电机(类别=PrivateAPISchemeGenerator)
URL模式=[
路径('public/',public_schema_view.with_ui('swagger',cache_timeout=0),name='schema-public'),
path('private/',private_schema_view.with_ui('swagger',cache_timeout=0),name='schema-private'),
]