我知道在传统的摇摇欲坠的YAML文件中,我们可以使用以下方式定义方案:
schemes:
- http
- https
//OR
schemes: [http, https]
但是,如何使用带有drf-yasg
库的自动生成的摇摇欲坠页面做同样的事情?现在,生成的大张旗鼓页面仅包含HTTP
方案,但是缺少HTTPS
。我尝试将DEFAULT_API_URL
中的setting.py
设置为https://mybaseurl.com
,但似乎不起作用。
谢谢!
答案 0 :(得分:2)
要在 swagger 中同时使用 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,)
)
答案 1 :(得分:1)
有解决方法
在urls.py
中定义get_schema_view()时,请使用以下代码:
schema_view = get_schema_view(
openapi.Info( ... ),
url='https://example.net/api/v1/', # important bit
public=True,
permission_classes=(permissions.AllowAny,)
)
注意:您可以使用https或http,因为这样可以更好地将此解决方案与env变量一起用于不同的设置。
答案 2 :(得分:0)
放入
url='https://your_server_address/'
get_schema_view()函数中的URL。