8

我知道在传统的招摇 YAML 文件中,我们可以使用以下方式定义方案:

schemes:
  - http
  - https

//OR

schemes: [http, https]

但是,如何使用drf-yasg库自动生成的招摇页面做同样的事情?

现在,生成的 swagger 页面仅包含HTTP方案,但HTTPS缺少。我已经尝试将DEFAULT_API_URLin设置setting.pyhttps://mybaseurl.com,但它似乎不起作用。

4

3 回答 3

10

有一个解决方案。

在中定义 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,因为这样可以更好地将此解决方案与环境变量一起用于不同的设置。

于 2019-05-11T13:23:54.683 回答
6

要在 swagger 中同时使用httphttpsOpenAPISchemaGenerator方案,您可以从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_classget_schema_view()

schema_view = get_schema_view(
    openapi.Info( ... ),
    public=True,
    generator_class=BothHttpAndHttpsSchemaGenerator, # Here
    permission_classes=(AllowAny,)
)
于 2021-06-17T14:52:39.627 回答
0

url='https://your_server_address/'

在带有 URL 的 get_schema_view() 函数中。

于 2020-09-25T12:00:05.970 回答