build.gradle에 아래의 두 가지 추가해줌
implementation 'io.springfox:springfox-boot-starter:3.0.0'
SwaggerConfig 파일 추가해줌
package com.example.javafullcourse.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.useDefaultResponseMessages(true)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.javafullcourse.swagger"))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringBoot Rest API Documentation")
.description("3rd UMC Server: BAEMIN Clone coding - ?조")
.version("0.1")
.build();
}
}
api 파일은 반드시 ~controller.java 로 끝나야 한다.
또한 컨트롤러 파일의 경로는 위의 SwaggerConfig 파일에서 설정해준대로 'com.example.javafullcourse.swagger'의 하위에 존재해야 한다.
위와 같이 한 후 실행시켜보면 아래와 같은 에러가 발생할 수 있다.
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is n...
이는 spring boot와 spring fox의 버전이 맞지 않아 발생하는 에러이다. 이런 경우 application.yml 파일에 아래와 같이 내용을 추가해주면 문제가 해결 된다.
즉 spring: mvc: pathmatch: matching-strategy: ant_path_matcher를 추가해주면 된다. 이는 기존에 api 컨트롤러와 매칭된 경로의 기본값이 'path_pattern_parser'로 되어있어 맞지 않는 경로를 spring: mvc: pathmatch: matching-strategy: ant_path_matcher를 추가해줌으로써 경로를 맞추어 준 것이라 할 수 있다.
위와 같이 하여 실행한 후 서버 localhost:[서버포트]/swagger-ui/index.html로 들어가면 아래오 같이 swagger 창이 나오는 것을 확인할 수 있다. ex) http://localhost:8080/swagger-ui/index.html
출처
'JAVA > Spring Boot' 카테고리의 다른 글
[ Spring Boot ] - 간단 스케줄링 작업하기 (0) | 2023.08.09 |
---|---|
[ Java ] - SMS 전송하기 (feat. naver cloud platform) (0) | 2023.05.17 |
[ Spring Boot ] - HTTP 요청 관련 어노테이션 (0) | 2023.04.29 |
spock 사용법(테스트 코드 작성) (0) | 2023.02.23 |
[ Spring boot ] - intellij IDEA + gradle + jpa 프로젝트 생성하기(feat. rest api) (0) | 2022.11.19 |