[CowAPI] 3. Swagger + Code review

준돌·2022년 5월 26일
0

오늘의 Cow

목록 보기
4/45
post-thumbnail

1. Swagger 사용


  • Swagger doc
  • springboot로 Rest API 개발을 진행하며 자동으로 API 문서 자동화를 했습니다.

😎 Swagger vs Spring Rest Docs

  • 이 두가지를 비교하는 블로그가 많이 있었습니다.
  • 처음 API 자동화 문서를 적용해 보는 것 이기 때문에 Swagger를 선택했습니다.
  • Swagger를 통해 개발을 진행해 보았지만 너무 많은 어노테이션으로 인한 코드가 깔끔해 보이지 않았습니다.
  • 또한, TDD 기반 개발이므로 Spring Rest Docs도 적용해보며 경험해 보면 좋겠다는 생각을 했습니다.
  • 현재는 Swagger 이지만 추후에 Spring Rest Docs를 적용해볼 예정입니다.

2. Code review


build.gradle

implementation 'io.springfox:springfox-boot-starter:3.0.0'
  • Springfox doc
    😎 공식 문서를 참조 했습니다. Swagger 3.0을 사용하기 위해 dependency를 추가합니다.

Swagger Config

@Configuration
public class SwaggerConfig {

    @Bean
    public Docket restAPI() {
        return new Docket(DocumentationType.OAS_30)
                .useDefaultResponseMessages(true)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .paths(PathSelectors.ant("/api/v1/**"))
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("JunYoung OH's toy SpringBoot")
                .version("1.0.0")
                .description("JunYoung 의 토이 프로젝트 입니다.")
                .build();
    }
}

@Configuration

  • 한개 이상의 @Bean method를 선언한다는 것을 나타냅니다.
  • Bean definition을 생성하기 위해 Spring container에 의해 처리될 수 있습니다.
  • runtime에 bean들을 위해 service request합니다.

@Bean

  • method가 Spring container에 의해 관리되는 bean을 생성한다라는 것을 나타냅니다.

😎 restAPI( ) 함수로 bean을 생성하고 생성된 bean을 request 하기 위해 사용합니다.
😎 참고 코드 : 공식 Github

application-swagger.properties

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
  • Docket의 paths에서 PathSelectors를 보면 any(), none(), regex(), ant() 가 있습니다.

  • 특정 API만을 보여주고 싶을 때, API가 많다면 정규식을 이용한 regex or antPattern을 이용한 ant가 적합합니다.

😎 저는 정규식 보다 antPattern을 이용한 방법이 개발하는데 수월하여 antPattern을 사용하려고 합니다.

  • 하지만 spring에서 default로 MatchingStrategy.PATH_PATTERN_PARSER 가 설정되어 있습니다. MatchingStrategy

😎 ant Pattern을 사용하기 위해 strategy를 변경해 주었습니다.


3. Swagger Code


profile
눈 내리는 겨울이 좋아!

0개의 댓글