首页 > 解决方案 > drf_yasg swagger 中的 base_url 问题

问题描述

我在8000端口使用 Nginx 运行 Django。这里 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

标签: nginxdjango-rest-frameworkswaggeropenapidrf-yasg

解决方案


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

例如。像这样的东西应该在 Nginx 配置中

location / {
            proxy_set_header Host $host:$server_port;
    proxy_pass http://example.com:8000/;
}

推荐阅读