Swagger Tutorials & Notes

Swagger Tutorials & Notes

What is the URL to open Swagger UI ?

https://localhost:8080/ngdeveloper/api/swagger-ui.html

What is the URL to view the list of API’s as JSON in Swagger ?

https://localhost:8080/ngdeveloper/api/v2/api-docs

How to disable Swagger related URL’s in Spring Security ?

In your WebSecurityConfig class make sure to skip the below endpoints/urls,

@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/actuator/**", "/v2/api-docs", "/webjars/**", "/swagger-resources/**","/swagger-ui.html");		
}

In very few case it still throws the exceptions then try “**/swagger-resources/**” instead of “/swagger-resources/**”

How to disable Swagger UI in Production ?

Swagger UI can be enabled or disabled based on the profile. Make sure you have separate swagger configuration class and annotated with

@Profile("dev")

Now only for the profile dev it displays the Swagger UI.

Those who don’t know about the swagger config class below class is shared,

package com.ngdeveloper.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

import com.google.common.base.Predicates;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
@Profile("dev")
public class SwaggerConfig {
	@Bean
	public Docket api() {
	    return new Docket(DocumentationType.SWAGGER_2).select().apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot"))).apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().apiInfo(apiInfo());
	}

	private ApiInfo apiInfo() {
	     return new ApiInfoBuilder().title("NgDeveloper's API Docs").description("Explore NgDeveloper's API's and its uses").version("1.0").termsOfServiceUrl("http://ngdeveloper.com/").build();
	}	
}

617 total views, 10 views today

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.