[Spring Boot] Swagger란? / Swagger API 사용하기

2025. 2. 19. 21:39· BE/Spring Boot
목차
  1. Swagger란?
  2. Swagger API 사용하기
  3. build.gradle에 추가
  4. 스웨거 설정 - SwaggerConfig
  5. 컨트롤러 - @Tag, @Operation
  6. DTO - @Schema
  7. Swagger API 문서
728x90

Swagger란?

 

Swagger는 RESTful API를 설계, 문서화, 그리고 테스트할 수 있도록 도와주는 오픈 소스 프레임워크

API의 설계 및 관리에 널리 사용된다.

 

공식 사이트 : https://swagger.io/

 

API Documentation & Design Tools for Teams | Swagger

Swagger and OpenAPI go hand‑in‑hand. Swagger offers powerful and easy to use tools to take full advantage of the OpenAPI Specification. See how we do it

swagger.io

 


Swagger API 사용하기

build.gradle에 추가

implementation 'org.springdoc:springdoc-openapi-starter-webflux-ui:2.8.3'

 

 

스웨거 설정 - SwaggerConfig

여기서 title과 설명을 적어준다.

 

import io.swagger.v3.oas.models.Components;
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 SwaggerConfig {
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.components(new Components())
.info(apiInfo());
}
// 스프링 버전에 따라서 Swagger의 버전도 맞춰서 변경
private Info apiInfo() {
return new Info()
.title("Springdoc 테스트")
.description("Springdoc을 사용한 Swagger UI 테스트")
.version("1.0.0");
}
}

 

 

 


컨트롤러 - @Tag, @Operation

컨트롤러에서는 Tag 어노테이션과 Operation 어노테이션을 달아서 사용해준다.

 

summary에는 이름, description에는 설명을 넣어준다.

@RequiredArgsConstructor
@RequestMapping("/a")
@RestController
@Tag(name = "A 관련 기능")
public class AController {
private final AService aService;
@Operation(summary = "A 등록", description = "A의 값을 등록하는 기능입니다.")
@PostMapping("/register")
public void register(@RequestBody ADto.ARegister dto) {
aService.register(dto);
}
@Operation(summary = "A 상세 조회", description = "A의 idx 값으로 A를 조회하는 기능입니다.")
@GetMapping("/{aIdx}")
public ResponseEntity get(@PathVariable Long aIdx) {
ADto.AResponse response = aService.get(aIdx);
return ResponseEntity.ok().body(response);
}
@Operation(summary = "A 전체 조회", description = "A의 전체 목록을 조회하는 기능입니다.")
@GetMapping("/list")
public ResponseEntity getList() {
List<ADto.AResponse> response = aService.list();
return ResponseEntity.ok().body(response);
}
}

 

 

 


DTO - @Schema

DTO에는 Schema 어노테이션을 붙여서 사용한다.

 

description에는 설명을 넣어주고, example에는 예시로 보여줄 값을 넣어준다.

public class ADto {
@Getter
public static class ARegister{
@Schema(description = "A의 값", example = "a 01")
private String value;
private List<BRegister> bs;
public A toEntity() {
return A.builder()
.value(value)
.build();
}
}
@Getter @NoArgsConstructor @AllArgsConstructor @Builder
public static class AResponse {
@Schema(description = "A 번호")
private Long idx;
@Schema(description = "A 값")
private String value;
@Schema(description = "B 리스트")
private List<BResponse> bs;
public static AResponse from(A a) {
return AResponse.builder()
.idx(a.getIdx())
.value(a.getValue())
.bs(a.getB().stream().map(BResponse::from).toList())
.build();
}
}
@Getter @NoArgsConstructor @AllArgsConstructor @Builder
public static class BResponse {
@Schema(description = "B 번호")
private Long idx;
@Schema(description = "B 값")
private String value;
public static BResponse from(B b) {
return BResponse.builder()
.idx(b.getIdx())
.value(b.getValue())
.build();
}
}
}

 

 

 


Swagger API 문서

http://localhost:8080/swagger-ui/index.html#/ 에 들어가면 확인할 수 있다.

 

 

 

 

api마다 확인할 수 있다.

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'BE > Spring Boot' 카테고리의 다른 글

[Spring Boot] 페이지네이션(Pagination) 적용  (1) 2025.02.25
[Spring Boot] DataSource로 DB 이중화 (Master - Slave)  (1) 2025.02.20
[Spring Boot] SMTP로 구글 이메일 인증 기능 구현 (회원가입)  (0) 2025.02.19
[Spring Boot] Spring Security란? / 인증 수행 과정 / 인가 처리  (1) 2025.02.10
[Spring Boot] 연관관계 매핑  (0) 2025.02.10
  1. Swagger란?
  2. Swagger API 사용하기
  3. build.gradle에 추가
  4. 스웨거 설정 - SwaggerConfig
  5. 컨트롤러 - @Tag, @Operation
  6. DTO - @Schema
  7. Swagger API 문서
'BE/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] 페이지네이션(Pagination) 적용
  • [Spring Boot] DataSource로 DB 이중화 (Master - Slave)
  • [Spring Boot] SMTP로 구글 이메일 인증 기능 구현 (회원가입)
  • [Spring Boot] Spring Security란? / 인증 수행 과정 / 인가 처리
셰욘
셰욘
셰욘
seiyeon
셰욘
전체
오늘
어제
  • 분류 전체보기 (176)
    • 알고리즘 (46)
      • 프로그래머스 (2)
      • 백준 (37)
      • 문제 유형 (7)
    • CS (41)
      • Linux (6)
      • DB (15)
      • 자료구조 (3)
      • OOP (2)
      • 아키텍처 (0)
    • BE (42)
      • Java (9)
      • Spring Boot (32)
    • FE (6)
      • Next.js (1)
      • JavaScript (5)
      • Vue.js (7)
      • Web (0)
    • 배포 (5)
    • 회고 (19)
      • BEYOND SW 캠프 (19)
    • 기타 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그 관리

공지사항

인기 글

태그

  • 백트래킹
  • 그리디
  • 알고리즘
  • AWS
  • db
  • dfs
  • cs
  • fe
  • 구현
  • DP
  • web
  • 자료구조
  • 트리
  • 우선순위 큐
  • 회고
  • js
  • 오블완
  • bfs
  • 실습
  • spring boot
  • 프로그래머스
  • be
  • Java
  • 네트워크
  • 백준
  • 주간회고
  • 리눅스
  • Gateway
  • 티스토리챌린지
  • vue

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.1
셰욘
[Spring Boot] Swagger란? / Swagger API 사용하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.