[Dining-together] Swagger 연동

Jifrozen·2021년 5월 25일
0

Dining-together

목록 보기
1/25

swagger 연동

API를 개발할때 프론트와 원활한 소통을 위해서는 API 명세서가 필수이다. 명세서를 작성하는 여러가지 방법이 있는데 그 중 API 문서화를 자동으로 해주는 Swagger를 사용해보도록 하자.

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.6.1</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.6.1</version>
    </dependency>
    

메이븐에 dependency를 추가한다.


javaconfig 를 설정한다.

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket swaggerApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(swaggerInfo()).select()
                .apis(RequestHandlerSelectors.basePackage("kr.or.dining_together.member.controller"))
                .paths(PathSelectors.ant("/auth/**"))
                .build()
                .useDefaultResponseMessages(false); // 기본으로 세팅되는 200,401,403,404 메시지를 표시 하지 않음
    }

    private ApiInfo swaggerInfo() {
        return new ApiInfoBuilder().title("Member API Documentation")
                .description("회원 API 문서")
                .version("1").build();
    }
}

https://springfox.github.io/springfox/docs/current/#springfox-spring-mvc-and-spring-boot
공식문서

@EnableSwagger2

Springfox swagger 2 사용

Docket

Springfox 프레임 워크의 기본 인터페이스가 될 빌더로 구성을 위한 여러 가지 기본값과 편리한 방법을 제공하고 있다. 이후 select()로 ApiSelectorBuilder를 반환받아 사용할 수 있도록 해준다.

.apis

어떤 위치에서 api를 가져올것인가를 정의해준다.
(RequestHandlerSelectors.basePackage("kr.or.dining_together.member.controller"))
해당 패키지 하위에 있는 Controller를 기준으로 문서를 만들어 준다.

paths

특정 path만 필터링해서 문서를 만들어 준다.

.useDefaultResponseMessages

기본으로 세팅되는 200,401,403,404 메시지
필자같은 경우 따로 오류를 관리하기 위해서 표시하지 않았다


Controller

@Api(tags={"1. Sign"})
@RequiredArgsConstructor
@RestController
@RequestMapping(value="/auth")
public class SignController {
    /*
    로그인 회원가입 로직
     */
    private final UserRepository userRepository;
    private final JwtTokenProvider jwtTokenProvider;
    private final ResponseService responseService;
    private final PasswordEncoder passwordEncoder;
    private final UserService userService;

    @ApiOperation(value="로그인", notes = "이메일을 통해 로그인한다.")
    @PostMapping(value="/login")
    public SingleResult<String> login(@RequestBody @ApiParam(value="이메일 비밀번호",required = true) RequestLogin requestLogin){
        UserDto userDto = userService.login(requestLogin);
        return responseService.getSingleResult(jwtTokenProvider.createToken(String.valueOf(userDto.getEmail()), userDto.getRoles()));
    }



}

@Api(tags={"1. Sign"})

최상단 타이틀값 세팅

@ApiOperation(value="로그인", notes = "이메일을 통해 로그인한다.")

각 resource의; 제목과 설명

@RequestBody @ApiParam(value="이메일 비밀번호",required = true) RequestLogin requestLogin

파라미터의 대한 설명


보통 이런 설정파일은 이해하기 힘들기 때문에 공식문서나 블로그를 찾아서 하나하나씩 뜯어보는게 이해하기 좋은것같다....힘들긴 하지만..

https://taetaetae.github.io/posts/openapi-and-swagger-ui-in-spring-boot/
https://springfox.github.io/springfox/docs/current/#springfox-spring-mvc-and-spring-boot

0개의 댓글