Skip to content

Swagger should remain with the application API, and not the management interface #46570

Closed
@ccarv

Description

@ccarv

Description

As a follow up to: #39561

Current implementation
Swagger is bound to the management interface. This means, when you change quarkus.management.port, swagger-ui will follow suit.

Problem statement
In our environment, it is required that we bind our health check endpoints to HTTP and our application API to HTTPS. One application will deploy to multiple clusters and the URLs are not known at build time, and are only known during our CD process (workaround below).

Once quarkus.management.port is set and swagger-ui is bound to this new port, it is unable to execute the applications APIs through the swagger interface, as they would be hitting the HTTP endpoints that do not exist. As mentioned in the linked issue, workarounds exist but I think perhaps we need to reconsider how we're classifying swagger-ui.

Work arounds
In the issue I mentioned above, I've managed a workaround by injecting an environment variable into the pod only after I've determine the OpenShift route URL. The workaround teeters on a "hacky" solution, and ultimately introduces more maintenance and complexity in our pipelines.

Proposed enhancement
Similar to Spring Boot, swagger should remain with the base application API and not be bound to the management interface. In it's current state, any change to the management interface fundamentally breaks swagger-ui unless further configuration is defined, and or introducing more complexity to the deployment process.

Implementation ideas

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions