[SpringBoot] Swagger를 이용한 API 문서 자동화

2026. 5. 31. 22:09·SpringBoot

Swagger

REST API를 문서화하고 테스트할 수 있게 해주는 도구/명세

 

API 개발 시 프론트엔드 개발자나 외부 팀에게 아래 정보를 전달해야 함

  • 요청 URL
  • HTTP 메서드 (GET, POST 등)
  • 요청 파라미터/바디
  • 응답 형태

위 내용을 수동 작성하면 코드가 바뀔 때마다 문서도 일일이 따로 수정해야 함

Swagger는 이 과정을 코드에서 자동으로 생성, Controller에 작성된 내용이 Swagger UI에 자동으로 API 표시됨

 

Swagger UI 제공

브라우저에서 시각적으로 API를 확인할 수 있는 인터랙티브 문서 페이지를 제공함

http://localhost:8080/swagger-ui.html

 

  • 모든 API 엔드포인트 목록 확인
  • 요청/응답 스펙 확인
  • 직접 API 호출 테스트 가능 (Postman 필요 X)

 

OpenAPI 명세 생성

API 구조를 표준화된 JSON/YAML 형식으로 내보냄

http://localhost:8080/api-docs

이 파일을 활용해서

  • 프론트엔드에서 자동으로 API 클라이언트 코드 생성
  • Postman으로 import해서 테스트
  • 다른 팀/서비스와 API 스펙 공유 가능

 

 

Springdoc vs Springfox

Spring Boot 프로젝트에서는 springdoc-openapi 라이브러리를 사용하여 Swagger UI 기반으로 API 문서를 자동화 함

예전엔 Springfox Swagger가 많이 사용되었으나, 현재는 springdoc-openapi가 표준처럼 사용됨

 

Springfox Swagger

 

  • OpenAPI 2.0 (Swagger 2) 기반
  • 2020년 이후 사실상 개발 중단 상태
  • Spring Boot 2.6+ 버전과 호환 문제 발생
  • Spring Boot 3.x와는 호환 불가
  • 설정이 다소 복잡 (별도 Docket Bean 등록 필요)

 

Springdoc

 

  • OpenAPI 3.0 기반
  • 활발하게 유지보수 중
  • Spring Boot 2.x, 3.x 모두 호환
  • 설정이 매우 간단 (의존성 추가만 해도 바로 동작)
  • Spring Security, WebFlux, Actuator 등과 잘 통합됨

 

 

 


Swagger 설정

프로젝트 사양

  • Spring Boot 3.3.5
  • Gradle
  • Java 17

 

의존성 추가

build.gradle에 의존성 추가

이때 SpringBoot 버전마다 호환 가능한 springdoc 버전이 다르므로 아래 공식 문서를 확인할 것. 맞지 않는 버전을 사용할 시 프로젝트가 빌드되지 않고 오류가 날 수 있음

https://springdoc.org/#what-is-the-compatibility-matrix-of-springdoc-openapi-with-spring-boot

dependencies {
    # 현재 프로젝트는 SpringBoot 3.3.5이므로 springdoc 2.6.0 사용
    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
}

 

SpringSecurity 사용 시 허용 경로

SpringSecurity 사용 시 SecurityConfig에 Swagger 경로 허용 필요 (사용하지 않으면 필요 X)

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {

    http
        .csrf(csrf -> csrf.disable())
        .authorizeHttpRequests(auth -> auth
            .requestMatchers(
                "/swagger-ui/**",
                "/v3/api-docs/**"
            ).permitAll()
            .anyRequest().authenticated()
        );

    return http.build();
}

 

접속

아래 링크로 접속 시 Swagger 접속 가능

이때 application.properties에서 포트 번호나 Context Path를 따로 설정한 경우 적용 필요

http://localhost:8080/swagger-ui/index.html

# 예) Context path로 /api를 설정한 경우
http://localhost:8080/api/swagger-ui/index.html

 

 

Swagger 설정 클래스

API의 기본 정보 설정 가능

@Configuration
@OpenAPIDefinition(
    info = @Info(
        title = "My API",	// 문서 제목
        version = "v1",		// 버전
        description = "Spring Boot Swagger API 문서"	// 상세설명
    )
)
public class SwaggerConfig {
}

 

Swagger 문서 상세화

Controller 설명

@Tag

@Tag(name = "User API", description = "사용자 관련 API")	// 어노테이션 추가
@RestController
@RequestMapping("/users")
public class UserController {
 

API 설명

@Operation

@Operation(summary = "회원 조회", description = "ID로 회원 정보를 조회합니다.")
@GetMapping("/{id}")
public UserResponse getUser(@PathVariable Long id) {
    return new UserResponse(id, "hayeon");
}
 

 

Response DTO 설명

@Schema

@Getter
@AllArgsConstructor
@Schema(description = "회원 응답 DTO")
public class UserResponse {

    @Schema(description = "회원 ID", example = "1")
    private Long id;

    @Schema(description = "회원 이름", example = "hayeon")
    private String name;
}
 
저작자표시 (새창열림)

'SpringBoot' 카테고리의 다른 글

[SpringBoot + Nexacro] Nexacro 설치 및 프로젝트 생성과 연동  (0) 2026.06.15
[SpringBoot] Flyway로 DB 마이그레이션 및 DDL 작성  (1) 2026.06.08
[AWS] SpringBoot + AWS EC2 Ubuntu 서버 생성 및 배포  (0) 2026.04.07
[AWS] RDS DB 인스턴스 생성(PostgreSQL) 및 SpringBoot 연동  (0) 2026.04.07
[SpringBoot] Spring Secutiry + JWT 기반 로그인 구현  (0) 2026.01.22
'SpringBoot' 카테고리의 다른 글
  • [SpringBoot + Nexacro] Nexacro 설치 및 프로젝트 생성과 연동
  • [SpringBoot] Flyway로 DB 마이그레이션 및 DDL 작성
  • [AWS] SpringBoot + AWS EC2 Ubuntu 서버 생성 및 배포
  • [AWS] RDS DB 인스턴스 생성(PostgreSQL) 및 SpringBoot 연동
naahy
naahy
  • naahy
    종합장
    naahy
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Java
      • SpringBoot
      • Git
      • 트러블슈팅
      • Vue.js
      • Kotlin
      • Node.js
      • 코딩테스트
        • 백준
        • 프로그래머스
      • 스터디
        • CS
        • 알고리즘
      • -
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

    자바
    투포인터
    Kotlin
    Java
    이분탐색
    cs
    node.js
    bfs
    브루트포스
    백준
    프로그래머스
    백트래킹
    트러블슈팅
    API
    github
    SpringBoot
    코틀린
    React
    mongodb
    Nexacro
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
naahy
[SpringBoot] Swagger를 이용한 API 문서 자동화
상단으로

티스토리툴바