How do you turn off swagger-ui in production
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
When deploying applications to production environments, it is crucial to ensure that sensitive tools and interfaces are not exposed to potential attackers. One such tool is Swagger UI, a powerful interface for testing and interacting with APIs. Although Swagger UI is incredibly useful during development, accidentally leaving it enabled in production can expose sensitive API details. Here's how to disable Swagger UI in production, complete with technical details and code samples where relevant.
Understanding Swagger UI
Swagger UI is part of the Swagger framework, an open-source project used to design, build, document, and consume RESTful web services. It provides a web-based interface that allows users to interact with the API's endpoints and see responses directly from a browser. While this is highly useful for testing and understanding API functionality, in a production environment, it can pose a security risk by revealing the API's structure and endpoints to unauthorized users.
Reasons to Disable Swagger UI in Production
- Security Concerns: Exposing Swagger UI in a live environment can inadvertently reveal sensitive API endpoints and methods.
- Performance: Serving Swagger UI consumes resources, even if only minimal.
- Best Practices: Following security and deployment best practices involves minimizing exposed surfaces in your application.
Methods to Disable Swagger UI
Disabling Swagger UI in production can depend on the framework or technology stack you are using. Here, we provide solutions for some common scenarios.
Spring Boot
In a Spring Boot application, Swagger is commonly configured using the `springfox-swagger-ui` dependency. You can disable Swagger in production by controlling its auto-configuration conditionally:
- Profile-Based Configuration: Use Spring profiles to load Swagger configuration only in specific environments (e.g., `dev` or `test`):
- Version Control: Keep versions of Swagger UI in synchronization with API changes to avoid inconsistencies in development.
- Alternatives: Consider using restricted access or API keys for Swagger UI in production if absolutely necessary.
- Monitoring: Ensure application monitoring tools are set up to alert about unauthorized use attempts if Swagger UI must be enabled under controlled circumstances.
Related reading
- How do you use NextToken in AWS API calls
- How does a new node join a group in the SWIM protocol?
- How does AMQP overcome the difficulties of using TCP directly?
- How does asychronous programming work in Netty? Does it make things more chatty?
- How do you use bcrypt for hashing passwords in PHP?
- How does Kafka specify key alias for Client Authentication?
- How does erlang handle distributed networks?
- How does google prediction API work

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.