Development/Spring

[Spring + Swagger] Swagger 사용

hyelie 2022. 10. 5. 10:33

swagger는 controller에 @RestController annotation을 붙인 것들에 대해, api 명세 목록을 제공해주는 명세 자동화 툴이다.

 

build.gradle

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

이것들 추가한다. 다음으로 config를 만들자.

 

SwaggerConfig.java

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        // paramter를 만든다. 나의 경우에는 login을 Authorization header로 넣기 때문에 이렇게 만든다.
        ParameterBuilder aParameterBuilder = new ParameterBuilder();
        aParameterBuilder.name("Authorization") //헤더 이름
                .description("Access Token") //설명
                .modelRef(new ModelRef("string"))
                .parameterType("header")
                .required(false)
                .build();

        List<Parameter> aParameters = new ArrayList<>();
        aParameters.add(aParameterBuilder.build());
        return new Docket(DocumentationType.SWAGGER_2)
                .globalOperationParameters(aParameters)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.bizkicks.backend"))
                .paths(PathSelectors.any())
                .build();

    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Bizkicks Spring Boot REST API")
                .version("1.0.0")
                .description("Bizkicks swagger api 입니다.")
                .build();

    }
}

 

 config는 2개 함수를 구현하면 된다. api(), appInfo(). api에는 어떤 parameter를 사용할 거고, 어떤 package 안에 있는 것을 넣어줄 것인지, 어떤 appInfo를 담을지이다.
 apiInfo는 title, version, description을 담으면 된다.

 이러면 끝이다.

 {서비스 IP}:{포트}/swagger-ui.html

 



 로 접속하면 아래와 같이 나온다.