스웨거를 사용중인데 위 그림처럼 아직 개발이 덜 되었거나 스웨거에서 기본적으로 만들어놓은 api들도 모두 제공하여 api 명세를 보는 사람들이 매우 피곤해할것 같았다.
그래서 안쓰는 컨트롤러의 api를 숨기는 방법, 이번에 내가 사용하지는 않았지만 추가적으로 메서드단위로 숨기는 방법, 그리고 open-api에서 자동으로 만드는 명세를 숨기는 방법을 알아보았다.
OpenAPI를 쓰다보면 기존 스웨거랑 다른 api들이 많아서 알아보는데 시간이 좀 걸리는 듯 하다.
@Hidden
@Tag(name = "서버 상태 확인 API")
@RestController
public class HealthCheckController {
... 내부 코드들 ...
}
위와 같이 @Hidden
어노테이션을 추가하면 된다.
아래와 같이 @Operation
어노테이션에 있는 hidden 파라메터를 이용하면 된다.
@Operation(hidden = true)
@GetMapping
public ResponseEntity<?> myDeprecatedMethod() {
... 내부 코드 ...
}
@Bean
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
.group("public-apis")
.packagesToScan("com.your.package")
.build();
}
위처럼 GroupedOpenApi
를 bean으로 등록한다. 그리고 추가하고자 하는 api가 있는 패키지를 packageToScan
메서드에 등록한다.