Api를 ui로 간단하게 테스트 할 수 있고, 문서화하여 정리할 수 있는 Swagger를 Spring Boot에서 적용하는 방법입니다.
일단, Swagger를 사용하기 위해서는 pom.xml 파일에 dependency를 추가해줘야 합니다.
springfox-swagger2 와 springfox-swager-ui 두 가지를 추가합니다.
<!-- springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- springfox-swager-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
위와같이 dependency를 추가해주고, SwaggerConfig 이름의 클래스를 생성해줍니다.
@Configuration, @EnableSwagger2 두 가지 어노테이션을 달아줍니다. 그리고 ui를 통해 보여질 기본적인 내용을 지정해 줍니다.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("TEST")
.description("FIRST API")
.build();
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("example")
.apiInfo(this.apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("com.example.backend.controller"))//controller package name
.paths(PathSelectors.ant("/api/**")).build();
}
}
apiInfo는 Swagger-ui에서 메인으로 보여질 내용을 설정합니다.
Docket은 api 의 그룹명이나 이동경로, 보여질 api 가 속한 패키지 등의 자세한 정보를 담습니다.
다음으로 간단한 api를 만듭니다. ApiController라는 이름으로 클래스를 생성하고
@RestController, @RequestMapping("/api/") 두 가지 어노테이션을 추가해줍니다.
여기서 설정한 ("/api/") 주소에 따라 해당 컨트롤러로 데이터를 전달하게 됩니다.
@RestController
@RequestMapping("/api/")
public class ApiController {
@GetMapping( value = "test", produces = MediaType.TEXT_PLAIN_VALUE)
@ApiOperation(value = "Test Sample")
public Object sample(@RequestParam String param) {
return ResponseEntity.ok(param);
}
}
api까지 만들었다면 스프링 부트를 실행하고, 웹 브라우저에서 localhost:8080/swagger-ui.html 주소로 접속하면 Swagger에 접속할 수 있습니다.
위와같이 앞서 제작한 api가 정상적으로 나타난다면 Swagger 연동완료!
+) 디렉토리 구조입니다.
728x90
'[IT] > SpringBoot' 카테고리의 다른 글
[Spring Boot] 설정파일 암호화 (application.yml) (0) | 2021.04.28 |
---|---|
[Spring Boot] Controller - Dto 유효성 검사 (0) | 2021.04.19 |
[Spring Boot] Junit5 테스트 순서 지정 (0) | 2021.04.18 |
[Spring Boot] JPA metamodel must not be empty 에러 (0) | 2021.04.16 |
[Data JPA & Query DSL] Repository의 구현클래스 선정 규칙 (0) | 2021.04.03 |