현재까지 Springboot 2.x 만 사용을 해오다가 새로운 프로젝트를 하게 됐는데 팀원 분이 3.x를 사용해봤다고 하여 경험 삼아 사용해보기로 했다. 또 사용해보지 않았지만 최근 많이들 사용하는 기술을 사용해보자 했는데 그 중 하나가 swagger였다. swagger를 적용시켜보기 위해서 test 파일을 만들어 적용을 시켜보는데 역시나 많은 에러들을 만났다.
@Configuration
public class SwaggerConfig {
private static final String API_NAME = "Swagger Test API";
private static final String API_VERSION = "0.0.1";
private static final String API_DESCRIPTION = "이것은 스웨거 테스트입니다.";
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false) //기본 응답코드 표시
.apiInfo(apiInfo()) //Api 정보
.select()
.apis(RequestHandlerSelectors.basePackage("com.test.swaggerTest")) //적용할 패키지명
.paths(PathSelectors.any()) //패키지 하위에서 적용할 url path 지정
.build();
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(API_NAME)
.version(API_VERSION)
.description(API_DESCRIPTION)
.build();
}
}
@RestController
public class TestController {
@GetMapping
@ApiOperation(value="테스트", notes="테스트 중입니다.")
public ResponseEntity Test(TestDto dto) {
return new ResponseEntity<>(HttpStatus.OK);
}
}
@Getter
@AllArgsConstructor
public class TestDto {
private String name;
}
해당 코드 작성 후에 실행을 해봤는데 결과는... 실패
알고 보니
Swagger 2.x.x까지는 localhost:8080/swagger-ui.html이였지만. Swagger 3.0.0부터는 localhost:8080/swagger-ui/index.html로 변경되었기 때문에 이 부분 신경 써서 접속하면 된다.
그리하여 다시 접속을 해봤는데
결과는 Whitelabel Error.
이후에 에너테이션을 붙여야한다는 글을 보고
두번째 시도(실패)
@Configuration + @EnableSwagger2을 붙여보았다.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private static final String API_NAME = "Swagger Test API";
private static final String API_VERSION = "0.0.1";
private static final String API_DESCRIPTION = "이것은 스웨거 테스트입니다.";
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false) //기본 응답코드 표시
.apiInfo(apiInfo()) //Api 정보
.select()
.apis(RequestHandlerSelectors.basePackage("com.test.swaggerTest")) //적용할 패키지명
.paths(PathSelectors.any()) //패키지 하위에서 적용할 url path 지정
.build();
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(API_NAME)
.version(API_VERSION)
.description(API_DESCRIPTION)
.build();
}
}
해당 에너테이션을 추가했는데 결과는 에러..
에러 사진을 캡처를 못했지만 spring mvc 패턴과 관련된 에러가 나타났다. 글을 찾아보니 swagger config를 사용하다보니 뭔가 spring mvc패턴을 건드려서 생긴 에러 같다.