본문 바로가기

자바(JAVA)/스프링(Spring) & 스프링부트(Spring Boot)

Swagger(SpringDoc) RESTful API 문서 자동화 테스트(Spring boot 3)

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)이 설치 안되어 있는 분들은 아래 링크로 설치를 먼저 진행 한다.

 

 

https://gmffl.tistory.com/60

 

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  값이 잘 날아오는 것을 확인할 수 있었다.