[SPRING] 스프링 부트에서 swagger-ui를 완전히 비활성화하는 방법 (/ swagger-ui.html은 404를 반환해야 함)
SPRING스프링 부트에서 swagger-ui를 완전히 비활성화하는 방법 (/ swagger-ui.html은 404를 반환해야 함)
다음 주제를 읽었습니다. Spring MVC로 Swagger 비활성화하기
나는 다음과 같이 썼다.
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.project.name.controller"))
.paths(PathSelectors.ant("/api/**"))
.build()
.apiInfo(apiInfo())
.enable(false);
}
하지만 ui : localhost : 8080 / swagger-ui.html에 액세스하려고하면 내가 참조
정확하지 않게 보입니다. 이 URL을 완전히 비활성화 할 수 있습니까? 404 예를 들어 또는 이와 같은.
해결법
-
==============================
1.내 대답은 앞에서 제시 한 대답과 약간의 차이가 있습니다. 저는 대개 swagger라는 별도의 스프링 프로파일을 만듭니다. Swagger를 사용하려면 응용 프로그램을 시작하는 동안 다음 VM 플래그를 전달하십시오 (-Dspring.profiles.active = swagger). 다음은 내 Swagger 구성의 예입니다.
내 대답은 앞에서 제시 한 대답과 약간의 차이가 있습니다. 저는 대개 swagger라는 별도의 스프링 프로파일을 만듭니다. Swagger를 사용하려면 응용 프로그램을 시작하는 동안 다음 VM 플래그를 전달하십시오 (-Dspring.profiles.active = swagger). 다음은 내 Swagger 구성의 예입니다.
@Profile(value = {"swagger"}) @Configuration @EnableSwagger2 public class SwaggerConfiguration { ... }
다음 번에 swagger 프로필없이 swagger-ui.html에 액세스하려고하면 빈 Swagger 화면이 표시되지만 404는 표시되지 않습니다.
정적 Swagger UI 페이지를 전혀로드하지 않으려면 다음과 같이 간단한 컨트롤러를 작성할 수 있습니다.
@Profile("!swagger") @RestController @Slf4j public class DisableSwaggerUiController { @RequestMapping(value = "swagger-ui.html", method = RequestMethod.GET) public void getSwagger(HttpServletResponse httpResponse) throws IOException { httpResponse.setStatus(HttpStatus.NOT_FOUND.value()); } }
이제 swagger-profile을 사용하지 않고 swagger-ui.html에 액세스하려고하면 404가 표시됩니다.
-
==============================
2.@ EnableSwagger2를 자체 @Configruation으로 외부화하고 속성 또는 프로필을 통해 조건부로로드 할 수 있습니다. 예 :
@ EnableSwagger2를 자체 @Configruation으로 외부화하고 속성 또는 프로필을 통해 조건부로로드 할 수 있습니다. 예 :
@Profile("!production") @Configuration @EnableSwagger2 public class SwaggerConfiguration{ //Additional Swagger Beans
}
이는 프로덕션이 아닌 모든 프로파일에 대해 서서히 활성화 될 것입니다.
-
==============================
3.컨트롤러 안의 Swagger 주석을 가지고 있지 않다면 ... SwaggerConfig.class와 빌드 의존성을 제외하면됩니다.
컨트롤러 안의 Swagger 주석을 가지고 있지 않다면 ... SwaggerConfig.class와 빌드 의존성을 제외하면됩니다.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <excludes> <exclude>com/company/app/SwaggerConfig.java</exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> </exclude> <exclude> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </exclude> </excludes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
from https://stackoverflow.com/questions/46454473/how-to-fully-disable-swagger-ui-in-spring-boot-swagger-ui-html-should-return-4 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 설정으로 기본 지역 및 시간대 초기화 (0) | 2019.03.15 |
---|---|
[SPRING] 확장 성 및 테스트 가능성을 고려하면서 도메인 엔터티를 DTO로 올바르게 변환하는 방법 (0) | 2019.03.15 |
[SPRING] Hibernate Validator와 함께 커스텀 ResourceBundle 사용하기 (0) | 2019.03.15 |
[SPRING] MySQLNonTransientConnectionException : 클라이언트가 서버가 요청한 인증 프로토콜을 지원하지 않습니다. MySQL 클라이언트 업그레이드 고려 (0) | 2019.03.15 |
[SPRING] Spring 데이터 쿼리에서 자식 객체 필터링 (0) | 2019.03.15 |