전체 코드는 여기에서 확인할 수 있습니다.
안녕하세요 이번에는 API를 테스트 할 수 있는 Swagger 문서를 추가 해보도록 하겠습니다.
build.gradle 파일에 추가해줍니다.
// swagger
compile('io.springfox:springfox-swagger2:2.7.0')
compile('io.springfox:springfox-swagger-ui:2.7.0')
그 다음 SwaggerConfig 파일을 만들어 줍니다.
@Configuration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot REST Sample with Swagger")
.description("API 문서")
.termsOfServiceUrl("")
.contact(new Contact("user", "url", "user@example.com"))
.version("1.0")
.build();
}
}
그 다음으로 Controller에 코드를 추가 해줍니다. 저는 PostController에 추가 해주도록 하겠습니다.
@RestController
@RequiredArgsConstructor
@Api(tags = {"게시물 관련 API"})
public class PostController {
private final PostService postService;
@GetMapping("post/{id}")
@ResponseStatus(value = HttpStatus.OK)
@ApiOperation(value = "게시물 조회", notes = "게시물을 조회합니다.")
public SuccessResponse<PostDTO> getPost(@PathVariable(name = "id") Long id) {
PostDTO post = postService.getPost(id);
return SuccessResponse.success(post);
}
@PostMapping("/post")
@ResponseStatus(value = HttpStatus.CREATED)
@PreAuthorize("isAuthenticated()")
@ApiOperation(value = "게시물 생성", notes = "게시물을 생성합니다.")
public SuccessResponse<PostDTO> createPost(@Valid @RequestBody PostDTO postDTO) {
PostDTO post = postService.createPost(postDTO);
return SuccessResponse.success(post);
}
@PutMapping("post/{id}")
@ResponseStatus(value = HttpStatus.OK)
@PreAuthorize("isAuthenticated()")
@ApiOperation(value = "게시물 수정", notes = "게시물을 수정합니다.")
public SuccessResponse<PostDTO> updatePost(@Valid @RequestBody PostDTO postDTO, @PathVariable(name = "id") Long postId) {
PostDTO postDTOResponse = postService.updatePost(postId, postDTO);
return SuccessResponse.success(postDTOResponse);
}
@DeleteMapping("post/{id}")
@ResponseStatus(value = HttpStatus.OK)
@PreAuthorize("isAuthenticated()")
@ApiOperation(value = "게시물 삭제", notes = "게시물을 삭제합니다.")
public SuccessResponse<String> deletePost(@PathVariable(name = "id") Long postId) {
postService.deletePost(postId);
return SuccessResponse.success(null);
}
@GetMapping("/post-category")
@ResponseStatus(value = HttpStatus.OK)
@PreAuthorize("isAuthenticated()")
@ApiOperation(value = "게시물 카테고리 조회", notes = "게시물 카테고리를 조회합니다.")
public SuccessResponse<List<PostCategoryDTO>> postCategory() {
List<PostCategoryDTO> postCategoryDTOS = postService.postCategoryList();
return SuccessResponse.success(postCategoryDTOS);
}
}
@Api : 해당 컨트롤러가 어떤 API 그룹인지 적어주세요.
@ApiOperation : value -> api의 제목? 을 적어주세요.
@ApiOperation : notes -> api에 대한 설명을 적어주세요.
그 후 Main 실행 파일에 가셔서 @EnableSwagger2 를 붙여주세요.
@SpringBootApplication
@EnableSwagger2
public class BoardRestApiApplication {
public static void main(String[] args) {
SpringApplication.run(BoardRestApiApplication.class, args);
}
}
저 같은 경우에는 Spring Security를 사용하고 있기 때문에 swagger 관련 주소를 제외시켜주어야 합니다. SecurityConfig에 추가시켜줍니다.
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/webjars/**")
.antMatchers("/v2/api-docs/**")
.antMatchers("/configuration/**")
.antMatchers("/swagger*/**");
}
이제 실행하신다음 http://localhost:8080/swagger-ui.html 에 접속하시면 아래와 같은 화면이 나오며 api를 테스트 할 수 있습니다.
'스프링 부트' 카테고리의 다른 글
스프링부트 게시판 API 만들기 - 10 (댓글 기능 만들기 및 쿼리 최적화2) (0) | 2021.04.30 |
---|---|
스프링부트 게시판 API 만들기 - 9 (유저와 게시물 연관시키기 및 쿼리 최적화) (0) | 2021.04.29 |
스프링부트 게시판 API 만들기 - 7 (게시물 카테고리 적용하기) (0) | 2021.04.27 |
스프링부트 게시판 API 만들기 - 6 (Spring Security를 사용하여 Json로그인 하기) (0) | 2021.04.25 |
스프링부트 게시판 API 만들기 - 5 (유저 생성 및 테스트코드 작성) (0) | 2021.04.23 |