Springboot

[Sprong Boot]Swagger 사용하기

mingkyy 2023. 2. 2. 20:24

1. Swagger

RESTful API문서를 자동화 하는 도구
문서 화면에 API를 테스트 할 수 있다.

2. build.gradle 의존성 추가

dependencies {
 
   implementation 'io.springfox:springfox-boot-starter:3.0.0'
}

3. Swagger2Config 작성

@EnableSwagger2
@Configuration
public class Swagger2Config {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.mingkyy.MyDiary"))
                .paths(PathSelectors.any()) 
                .build()
                .groupName("API 1.0.0")  //그룹 아이디
                .apiInfo(apiInfo());

    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("MyDiary") //타이틀
                .description("MyDiary API") // 설명
                .version("1.0.0")
                .build();
    }
}
  •   select()
    •    ApiSelectBuilder를 생성
  •  .apis(RequestHandlerSelectors.basePackage("프로젝트 패키지 이름"))
    •    해당 패키지 아래의 API을 노출한다.
    •    사용하지 않으면 basic- error - controller가 디폴트로 반영. 
  •   .paths(PathSelectors.any())
    •   전체 API가 스웨거를 통해 문서화 된다
    •  ** 특정 API만 문서화 하고 싶으면 .paths(PathSelectors.ant("/Mydiary/**")) 사용
    • -> /Mydiary 로 시작하는 API만 문서화 한다.

 

 4. Controller 작성

@Api(tags = "Comment Controller Api")
@RestController
@RequiredArgsConstructor
public class CommentController {

    private final CommentService commentService;

    @ApiOperation(value = "댓글 저장", notes = "댓글, 대댓글 저장")
    @PostMapping("/board/comment/{id}")
    public Long commentCreate(@RequestBody CommentDto commentDto, @PathVariable Long id, @CurrentMember Member
            member) {
        return commentService.saveComment(commentDto, id, member);

    }

 

  • @Api(tags = "main Controller API")
    •  Swwager 리소스 명시, tag를 통해 설명 작성
  •  @ApiOperation(value = "메인 화면", notes = "메인 화면 불러오기")
    •  API에 대한 간략한 설명

 

5. 오류 

 

"Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException" 

springboot 2.6 버전 이상으로 한면 몇몇 라이브러리에 오류가 발생한다. 

 

application.properties

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

 추가하면 오류 해결!

 

6. 화면