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
로 접속하면 아래와 같이 나온다.