swagger-api/swagger-ui

urls option from custom swagger-config.yaml ignored.

Open

#6,019 创建于 2020年5月18日

在 GitHub 查看
 (17 评论) (5 反应) (2 负责人)JavaScript (8,801 fork)batch import
Hacktoberfestcat: dockertype: bug

仓库指标

Star
 (25,447 star)
PR 合并指标
 (平均合并 20小时 34分钟) (30 天内合并 14 个 PR)

描述

Q&A (please complete the following information)

  • OS: Archlinux
  • Browser: Firefox
  • Version: 76
  • Method of installation: Docker
  • Swagger-UI version: 3.25.3
  • Swagger/OpenAPI version: OpenAPI 3.0

Content & configuration

Swagger-UI configuration options: I tried both yaml and json:

---
urls:
  - name: Master API
    url: specs/master.yaml
  - name: Bot API
    url: specs/bot.yaml
{
    "urls": [
        {
            "name": "Master API",
            "url": "specs/master.yaml"
        },
        {
            "name": "Bot API",
            "url": "specs/bot.yaml"
        }
    ]
}

I looked at the swagger-config.yaml from this repository for reference.

Describe the bug you're encountering

I have a micro service system with various swagger-specified APIs. My goal was to create a dedicated application, that integrates all the swagger documentation. ron in IRC suggested to use the urls option to configure multuple spec URLs to be selected. So I pulled the swaggerapi/swagger-ui:v3.25.3 image, copied my files in specified the URLS environment variable. As expected: The swagger UI shows the first URL in the list by default and allows to switch between the URLs using a selection in the header. Because we have many APIs, I then tried to use a custom swagger-config.yaml by copying it into the container and specifying CONFIG_URL=swagger-config.yaml with the contents from above.

The UI seems to load the correct swagger-config.yaml (or .json) file, but it still shows the default petstore spec, apparently ignoring the provided urls option.

To reproduce...

Steps to reproduce the behavior:

  1. Copy a swagger spec to /usr/share/nginx/html/specs/ inside the swaggerapi/swagger-ui:v3.25.3 image
  2. Copy a swagger-config.yaml to /usr/share/nginx/html/swagger-config.yaml with the following content:
    ---
    urls:
      - name: Spec
        url: specs/<spec file name>
    
  3. Add ENV CONFIG_URL=swagger-config.yaml to the Dockerfile (or set it while running the container)
  4. Open the swagger UI in the browser

Expected behavior

I'd expect to see the spec from the configured URL

贡献者指南