drf_yasg swagger 中的 base_url 问题

CHI*_*N M 3 nginx swagger django-rest-framework openapi drf-yasg

我正在8000端口上运行 Django 和 Nginx。这里Nginx暴露在8000端口之外。但在 Swagger UI 中,base_url设置为没有端口。因此 Swagger 尝试在没有端口的情况下访问端点,然后它给出的响应为TypeError: Failed to fetch

请参考下图了解base_url是如何设置的 在此输入图像描述

请参考下图了解 Swagger 是如何发送请求的 在此输入图像描述

当我使用 Postman 访问端点(带有端口)时,它工作正常。仅当我尝试使用 Swagger 时才会出现此问题(因为发送的请求没有端口)。

这里我希望 Swagger 使用该端口发送所有请求。请帮我解决这个问题。谢谢。

笔记:

  1. 我正在使用drf-yasg==1.17.1包来生成Swagger UI
  2. 其他要求是Django==3.0.3djangorestframework==3.11.0

小智 7

您还需要告诉 Nginx 转发服务器端口。由于 swager 从请求标头获取基本 url 端口(如果没有按照 mtshaikh 建议进行硬编码)。

例如。Nginx 配置中应该有类似这样的内容

location / {
            proxy_set_header Host $host:$server_port;
    proxy_pass http://example.com:8000/;
}
Run Code Online (Sandbox Code Playgroud)