youngseo's TECH blog

[SPRING] Swagger, 프론트와의 소통을 편하게 하는 자동 툴 본문

BackEnd/JAVA\SPRING

[SPRING] Swagger, 프론트와의 소통을 편하게 하는 자동 툴

jeonyoungseo 2023. 2. 11. 11:39

config>SecurityConfig에 다음 코드를 붙여놓는다. 

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {



    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select() //모든 경로의 api를 사용한다.
                .apis(RequestHandlerSelectors.basePackage("com.example.umc3_teamproject"))
                .paths(PathSelectors.any())
                .build()
                ;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Web Application Api")
                .description("설명 부분")
                .version("1.0.0")
                .build();
    }
}

Build.gradle

	implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
	implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

Swagger와 @Bean annotation에 대한 설명

만약 SPRING 입문자라면, 이 코드는 말이 안된다고 생각할 수 있다. (나도 그랬다..)
이 코드는 어떤 곳에서도 가져다 쓰지 않는다.
코드들끼리 종속이 되고, 연결이 되어 최종적으로 main과도 하나로 이어져야 코드가 돌아가지 않는가? 라고 생각했다면, 이번이 swagger를 공부하면서 bean에 대해서도 공부할 수 있는 절호의 기회다..!!!

위에서 말한 것이 SPRING Bean이 가지는 가장 큰 특징이다.
@controller @service 모두 Bean의 일종으로, @bean은 Spring IoC 컨테이너에 의해 생성되고 관리된다. 따라서 위와 같이 독립적으로 사용될 수 있으며, Bean 선언 하나만으로 싱글톤으로 객체를 관리해준다.

구현 모습

우리가 따로 내용을 넣어주지 않아도 swagger에서 자동으로 위와 같이 어떤 controller에 어떤 api가 있는지 확인할 수 있다. 만약 위의 굵은 글씨 부분 이름을 따로 지정해주고 싶다면 아래와 같이 @Api annotation에 이름을 지정해주면 custom화하여 사용할 수 있다.

member api가 들어있는 controller의 모습

api를 누르면 어떤 method가 있는지 확인할 수 있고,

또 method를 누르면 어떤 Req body와 Res body가 있는지, 형태 또한 확인할 수 있어
일일히 노션에 type을 적어야 하는 불편함을 감수할 수 있다.

사실 이 데이터를 전달해주는 server쪽보다 client 쪽이 더 편하다고 느껴서 강추한다..!!
swagger 구현은 다음 동영상을 참고하였습니다.