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. 화면
