Swagger(SpringDoc) RESTful API 문서 자동화 테스트 하기
Swagger를 통해 RESTful API 문서 자동화를 위한 간단한 Test를 해본다.
개발환경
Spring boot : 3.0.6
Maven
Ecplipse 2023-3
Java 17
Swagger UI (springdoc-openapi-starter-webmvc-ui 2.0.2)
사전 준비 : Spring Boot에 Swagger가 적용되어 있어야 함
먼저 기본적으로 Swagger(SpringDoc)이 프로젝트에 적용되어 있어야 한다.
Swagger(SpringDoc)이 설치 안되어 있는 분들은 아래 링크로 설치를 먼저 진행 한다.
Spring Boot 3.x에 Swagger 적용 : springdoc-openapi 라이브러리 사용
springdoc-openapi 라이브러리란 ? 스프링 부트 프로젝트를 사용하여 API 문서 생성을 자동화 해주는 도구 springdoc-openapi는 스프링 구성, 클래스 구조 및 다양한 주석을 기반으로 API 의미를 추론하기 위
gmffl.tistory.com
[1] OpenAPI Bean(빈) 설정
Api info 명세를 작성하고 OpenAPI 빈을 생성한다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
@Configuration
public class OpenApiConfig {
@Bean
public OpenAPI openAPI() {
Info info = new Info().title("Demo 오픈 API").version("v0.0.1");
info.description("Demo 오픈 API 입니다.");
return new OpenAPI().info(info);
}
}
Swagger UI를 확인해보면 내가 설정한 title, version, description 정보가 반영된 것을 확인할 수 있다.
[2] Controller / Schema 생성 및 Annotation 설정 방법
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.spring.demo.console.vo.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@Tag(name = "swagger 테스트 API", description = "swagger 테스트를 진행하는 API")
@RestController
@RequestMapping("/test/")
public class TestController {
@Operation(summary = "User 정보 Get", description = "User 정보를 조회합니다.")
@GetMapping("/get-userinfo")
public ResponseEntity<User> getTest() {
User user = new User();
user.setUserName("아무개");
user.setUserAge(20);
return ResponseEntity.ok(user);
}
}
Swagger API 테스트를 위해
임시의 TestController 를 작성한 후에 @Tag와 @Operation 어노테이션에 각각의 설정 정보를 작성하면
아래 Swagger UI에서 내가 설정한 내용이 확인이 된다.
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "사용자 정보")
public class User {
@Schema(description = "사용자 이름", nullable = false)
private String userName;
@Schema(description = "사용자 나이")
private int userAge;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
}
TestController를 작성시에 API에서 주고받는 객체를
@schema 어노테이션을 사용하여 description 을 작성해주면 마찬가지로 아래의 Swagger UI 에서 확인이 가능하다.
[3] Open API 테스트(Postman 사용)
API 테스트용으로 잘 알려진 Postman 을 활용하여 생성한 API로 호출하니,
return 값이 잘 날아오는 것을 확인할 수 있었다.
'자바(JAVA) > 스프링(Spring) & 스프링부트(Spring Boot)' 카테고리의 다른 글
Spring Boot properties 값 가져오기 JUnitTest (0) | 2023.05.22 |
---|---|
JDK 17(Zulu 17 설치) 및 JDK 여러 버전 동적 사용 방법 (0) | 2023.05.22 |
Spring Boot 3.x에 Swagger 적용 : springdoc-openapi 라이브러리 사용 (0) | 2023.05.17 |