1. 소개
Swagger란?
REST API 문서를 자동으로 생성하고 테스트할 수 있도록 도와주는 도구
Spring Boot에서 API를 만들면 보통 어떤 엔드포인트가 있고, 어떤 요청과 응답이 있는지 문서를 만들어야 하는데, Swagger를 사용하면 이 과정을 자동화할 수 있다.
기능
API 문서를 자동으로 생성
- 코드에 어노테이션을 추가하면 문서가 자동으로 생성됨
API를 웹 UI에서 바로 테스트
- Swagger UI를 통해 API를 직접 호출하고 응답을 확인할 수 있음
API 명세를 JSON/YAML 형식으로 제공해서 다른 개발자나 클라이언트가 쉽게 연동
- OpenAPI Specification(OAS) 기반으로 API를 표준화할 수 있음
코드와 동기화된 문서 유지
- 코드 변경 시 API 문서도 자동으로 업데이트
2. Swagger 설정
1) 의존성 추가 - build.gradle
dependencies {
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
}
2) Swagger 활성화 (application.yml)
springdoc:
api-docs:
enabled: true
swagger-ui:
path: /swagger-ui.html
3) Swagger 설정 파일 작성 (SwaggerConfig.java)
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.OpenAPI;
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("My API")
.version("1.0")
.description("Swagger를 이용한 Spring Boot API 문서입니다."));
}
}
4) Swagger 문서 확인
Spring Boot 애플리케이션 실행 후 웹 브라우저에서 Swagger UI 확인 가능
http://localhost:8080/swagger-ui.html
API 명세 JSON 확인
http://localhost:8080/v3/api-docs
3. Swagger 사용 예제
Controller에 API 문서 적용
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/users")
@Tag(name = "User API", description = "유저 관련 API")
public class UserController {
@Operation(summary = "유저 정보 가져오기", description = "유저 ID로 정보를 조회합니다.")
@GetMapping("/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
@Operation(summary = "유저 생성", description = "새로운 유저를 생성합니다.")
@PostMapping
public String createUser(@RequestBody String name) {
return "Created User: " + name;
}
}
4. 정리
API 문서를 자동으로 관리할 수 있다
백엔드와 프론트엔드 협업이 쉬워짐
웹 UI에서 바로 API를 테스트할 수 있다
API 명세를 JSON/YAML로 제공하여 연동이 쉬움
'Spring' 카테고리의 다른 글
[Spring] Spring Boot에서 DB Replication (0) | 2025.02.10 |
---|---|
[Spring] Redis를 이용한 캐싱 기법 (0) | 2025.02.08 |
[Spring] Spring Boot Starter 이해하기 (0) | 2025.02.08 |
[Spring] Spring Security (0) | 2025.02.06 |
[Spring] N + 1 문제 (0) | 2025.02.06 |