swaaaaaaaagger

전성영·2022년 7월 5일
0

spring

목록 보기
21/31

스코프가 줄은 만큼 백에서 할 수 있는 것을 찾고있다.
프론트 분이 고생이 많으신데 페이스 조절을 잘 하셨으면 좋겠다.

swagger란?

Swagger란 개발한 REST API를 편리하게 문서화 해주고, 이를 통해서 편리하게 API를 호출해보고 테스트할 수 있는 프로젝트이다.
SpringBoot 프로젝트의 문서화를 위해 Swagger를 적용한다.

적용 방법

  • build.gradle
// swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'


Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리(swagger포함)에 오류가 발생한다고 한다.
application.properties에 해당 코드를 추가하자.

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

SwaggerConfig.java

package com.hanghae.todoli.utils;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .useDefaultResponseMessages(false)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.hanghae.todoli.controller"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("TwoDo-Li")
                .description("투두를 진행하며 자신만의 캐릭터를 성장시키는 프로젝트 입니다.")
                .version("1.0")
                .build();
    }
}

.useDefaultResponseMessages(false) - 디폴트로 나오는 응답 코드 삭제

@ApilmplicitParams 어노테이션으로 Dto 각각의 파라미터들의 설명을 추가할 수 있다.

메인

접속은 자신의 주소/swagger-ui/ 로 접속을 하면 된다.
API 테스트도 할 수 있는데 로그인을 예를 들어보자.

Try it out을 눌러서 RequestBody 수정을 활성화를 하자.

그 후 Json 형식의 데이터를 수정 후 Execute를 해주면?????


결과가 나온다.
회원가입을 따로 안해줘서 아이디가 존재하지 않는다는 예외가 발생하였다.
굿굿굿ㄱ굿ㄱ수긋숫ㅅㄱ숫ㄱ숫!

또한 바로 밑에 Response 상태값?? 을 지정해줄 수 있는데

이런식으로 접근하면 된다!
api 제외도 구현할 수 있고 모델 객체의 세부사항도 정의할 수 있다!

참고표

Reference

https://kafcamus.tistory.com/43
https://hyeran-story.tistory.com/73

(추가) 추가적인 내용은 08.21~ WIL에 정리해놓았다.

profile
Slow and Steady

0개의 댓글