Я знаю, что в традиционном файле YAML чванства мы можем определить схемы с помощью:
schemes:
- http
- https
//OR
schemes: [http, https]
Однако как я могу сделать то же самое с автоматически сгенерированной страницей swagger с библиотекой drf-yasg
?
Теперь сгенерированная страница swagger содержит только HTTP
схемы, но HTTPS
отсутствует. Я пытался установить DEFAULT_API_URL
в setting.py
на https://mybaseurl.com
, но, похоже, это не работает.
Есть решение.
При определении get_schema_view() в urls.py
используйте этот код:
schema_view = get_schema_view(
openapi.Info( ... ),
url='https://example.net/api/v1/', # Important bit
public=True,
permission_classes=(permissions.AllowAny,)
)
Примечание. Вы можете использовать либо https, либо http, потому что лучше использовать это решение с переменной среды для разных настроек.
теперь он работает для https, но что, если я хочу реализовать и http, и htpps?
Помещать
url='https://your_server_address/'
в функции get_schema_view() с URL-адресом.
Чтобы использовать схемы http и https в чванстве, вы можете расширить OpenAPISchemaGenerator
из drf_yasg.generators
.
class BothHttpAndHttpsSchemaGenerator(OpenAPISchemaGenerator):
def get_schema(self, request=None, public=False):
schema = super().get_schema(request, public)
schema.schemes = ["http", "https"]
return schema
Так что теперь вы можете использовать его как generator_class
для get_schema_view()
schema_view = get_schema_view(
openapi.Info( ... ),
public=True,
generator_class=BothHttpAndHttpsSchemaGenerator, # Here
permission_classes=(AllowAny,)
)
есть прогресс в этом? Я столкнулся с той же проблемой