
RESTful API는 “요청을 어떻게 보내면, 어떤 응답이 오는지”가 규칙으로 정리되어 있어야 프론트/다른 서버/외부 개발자가 안전하게 사용할 수 있다. 명세서에는 보통 아래가 들어간다.
특히 Spring Data REST를 쓰면 엔드포인트가 자동 생성되기 때문에 “내가 안 만든 것 같지만 실제로 존재하는 API”가 생긴다. 그래서 Swagger(OpenAPI)로 “자동으로 문서화 + 테스트”까지 가능하게 만드는 게 협업/유지보수에 유리하다.
이건 “Backend configuration layer” 작업이다. 컨트롤러/서비스 로직이 아니라, API 문서를 생성하는 설정이다. Spring Boot 3.x는 jakarta 기반이므로 springdoc 2.x 계열을 쓰는 게 핵심.
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.15'
Spring Data REST는 보통 Repository 기반 엔드포인트가 자동 생성되고, 설정으로 basePath를 /api로 잡는 경우가 많다. 이때 OpenAPI 문서 경로/Swagger UI 경로도 “충돌 없이” 설계해야 한다.
# Swagger UI access path config (default: /swagger-ui/index.html) springdoc.swagger-ui.path=/swagger-ui.html
# OpenAPI doc path springdoc.api-docs.path=/api-docs
# Integrated configuration for Spring Data REST endpoints springdoc.show-data-rest=true

springdoc.show-data-rest=true → 자동 생성된 Data REST 엔드포인트까지 문서에 포함/swagger-ui/index.html 또는 설정한 path 기준으로 접근/api-docs로 떨어짐(프론트/외부 툴에서도 사용 가능) 이건 “Backend configuration layer + DI(IoC) 이해”가 같이 들어간다. Swagger UI가 문서를 그릴 때 제목/설명/버전 같은 메타정보를 어디서 가져오냐면, Spring 컨테이너에 등록된 OpenAPI Bean 설정을 참고한다.
package com.korit12.cardatabase.config;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class OpenApiConfig {
@Bean
public OpenAPI cardatabaseOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("Car Database API")
.description("자동차 및 소유주 관리를 위한 REST API 명세서")
.version("1.0.0")
);
}
}
즉, Spring이 실행될 때
@Configuration 클래스를 스캔해서 “설정 소스”로 인식@Bean 메서드를 Spring이 직접 호출해서 객체 생성OpenAPI 객체를 컨테이너가 들고 있다가REST API는 결국 “Frontend(HTML/JS/React) → Backend(Spring Boot) → DB(SQL)” 흐름으로 이해해야 한다.
Swagger(OpenAPI)는 이 중에서 “Frontend가 Controller로 요청을 어떻게 보내야 하는지”를 문서+테스트 화면으로 고정해주는 역할이다.
/api/cars, /api/owners)_links, _embedded)page, size, sort)가 자동 제공되는지/api/cars/search)가 어떤 쿼리 메서드를 노출하는지즉 “내가 컨트롤러에서 만든 API”만 보는 게 아니라, Data REST가 자동 생성한 API까지 Swagger에서 전부 확인해야 한다.
/api-docs)이 내려오는지springdoc-openapi-starter-webmvc-ui를 쓰면 Spring Boot에서 자동 문서화 가능@Bean으로 등록한 OpenAPI 설정이 Swagger UI의 제목/설명/버전에 반영된다