๊ธฐ์กด ํ๋ก์ ํธ์์ API ๋ฌธ์๋ฅผ Springdoc์ ํตํด OpenAPI 3.0 ์คํ์ ๋ง๊ฒ ์๋ ์์ฑํ์ฌ Swagger UI ์กฐํฉ์ผ๋ก ์ฌ์ฉํ๊ณ ์์๋ค.

์๋ฌด๋๋ ๊ฐ์ฅ ์ต์ํ ํด์ด๊ธฐ๋ ํ๊ณ , ๋น์์๋ Springdoc + Swagger UI ์กฐํฉ์ผ๋ก ๊ฐ๋๋, Spring Rest Docs๋ฅผ ์ฌ์ฉํ๋๋์๋ง ์ง์คํ๊ธฐ์ ์ง์ ์๋ฒ์ ํ
์คํธ๋ฅผ ํด๋ณผ ์ ์๋ค๋ ์ ์์ Swagger UI๋ฅผ ์ ํํ์๋ค.
ํ์ง๋ง, ๋ฌธ์๊ฐ ๊ด๋ฆฌ๋์ง ์๊ณ ๊ฐ๋ฐ์๋ค๊ฐ ์ฌ์ฉ๋ฅ ์ด ์ ์ ์ ์กฐํด์ง๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค. ๊ทธ๋์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด์ํ๊ณ ์ ๋จผ์ ๋ฌธ์๋ฅผ ์ ๋ฐ์ ์ผ๋ก ๊ฒํ ํด๋ณด์๋ค.
๊ฐ์
1. ํ๋ผ๋ฏธํฐ ์ค๋ช ๋ถ์ฌ

์์ฒญ๊ณผ ์๋ต ํ๋ผ๋ฏธํฐ๋ฅผ ๋จผ์ ์ดํด๋ณด์๋๋ฐ, ์ค๋ช
์ด ๋ถ์ด์๋ ๊ฒ๋ ์์ง๋ง ๋ถ์ด์์ง ์๊ณ ๋จ์ํ example๋ง ํฌํจํ์ฌ ์ด์๋๊ณ ์๋ ๊ฒ๋ ์์๋ค. ๊ทธ๋์ ์ด๋ค์ ํตํฉํ๊ธฐ ์ํด ๋ชจ๋ ์์ฒญ, ์๋ต ํ๋ผ๋ฏธํฐ์ ๋ถ๊ฐ ์ค๋ช
์ ๋ถ์ฌ์ฃผ์๋ค.

2. ์ด๋๋ฏผ ๊ธฐ๋ฅ์ ๋
ธ์ถ
API ๋ฌธ์์ ๋
ธ์ถ๋์ง ์์๋ ๋๋ ํน์ ๋
ธ์ถ๋์ง ์์์ผ ํ๋ ์ด๋๋ฏผ ๊ธฐ๋ฅ๋ค์ API๋ค์ด ๊ณ ์ค๋ํ ๋ฌธ์์ ๋
ธ์ถ๋๊ณ ์์๋ค. ์ด๋๋ฏผ ํ ํฐ์ด ์์ด์ผ ๋์ํ๊ธฐ์ ๊ทธ๋ฆฌ ํฐ ๋ฌธ์ ๋ ์๋์ง๋ง API ๋ฌธ์๋ฅผ ํ์ธํ ๋ ํ์์๋ ๊ฒ๊น์ง ๋
ธ์ถ๋ ํ์๋ ์์๊ธฐ์ ์ด๋ฅผ `@Hidden` ์ด๋
ธํ
์ด์
์ ํตํด ๊ฐ์ถฐ์คฌ๋ค.

๊ธฐ์กด์ ์ปจํธ๋กค๋ฌ๋ค์ xxxWebApi๋ผ๋ ์ธํฐํ์ด์ค๋ก ๋ฌธ์ํ ํด์ฃผ๊ณ ์์๋๋ฐ, Admin ๊ธฐ๋ฅ๋ค์ ๋์์์ ์ ์ธ๋์ด ์์๋ค. ๊ทธ๋์ ์ถ๊ฐ์ ์ผ๋ก AdminWebApi๋ ์์ฑํด์ฃผ์๋ค.
์ด๋ ๊ฒ ์๊ฒ๋๋ง ๊ฐ์ ์ ์งํํ๋๋ฐ, ์ฌ๊ธฐ์ Swagger UI์ ๋จ์ ์ ๋ช ๊ฐ์ง ๋ฐ๊ฒฌํ ์ ์์๋ค.
๋จ์
1. ์คํฌ๋กค ๋ฐฉ์์ ๋ฌธ์
Swagger UI๋ ์คํฌ๋กค ๋ฐฉ์์ ๋ฌธ์์ด๋ค. ํ๋์ API์ ์ง์คํ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ์ ๋ค๋ฅธ API๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ๊ธฐ์กด์ ๋ณด๊ณ ์๋ API์ ํ ๊ธ์ ์ ์ด์ผ๋ง ํธํ๊ฒ ์ฐพ์๋ณผ ์ ์๋ค. ์ฌ๊ธฐ์ ๋น์ทํ API๋ค์ด ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ํ๋ฒ์ ๊ตฌ๋ถํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ๋ ์์๋ค.
2. ์๋ต ํ๋ผ๋ฏธํฐ์ ์ค๋ช
์ ๋ณด๊ธฐ ์ด๋ ต๋ค -> ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค
Swagger UI์์๋ ์๋ต ํ๋ผ๋ฏธํฐ์ ์ค๋ช
์ ๋ณด๊ธฐ ์ํด์๋ ์๋ต์์ Schema๋ฅผ ์ ํํ๊ณ , ์ฌ๋ฌ ํ ๊ธ์ ์ง์ ๋๋ฌ๋ณด๋ฉด์ ํ์ธํด์ผ ํ๋ค. ๊ทธ๋์ ํ์
์ด๋ ์ค๋ช
์ ์ ์ด๋๋ ์ด๋ฐ ๊ฒ๋ค์ด ์กด์ฌํ๋์ง ์กฐ์ฐจ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.

๊ทธ๋ฌ๋ค๋ณด๋ ์์ฐ์ค๋ ๊ตฌ๋๋ก ์ ๋ฌํ๋ ์ผ์ด ์ฆ์์ก๋ค.
๋ณ๊ฒฝ
์์ ๋ ๋จ์ ์ ํด์ํ๋ฉด์ ๊ฐ๋
์ฑ์ด ์ข์ ๋ฌธ์ํ ํด ์ค ํ๋ณด๋ก Scalar์ ReDoc, Stoplight Elements๋ฅผ ๋ฝ์๋ค. ํ์ง๋ง ReDoc์ ๊ฒฝ์ฐ ๋ด๋ถ์์ ์๋ฒ๋ก ์ง์ ํ
์คํธ ํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ง ์์๊ณ , ์ต์ข
์ ์ผ๋ก๋ Scalar, Stoplight Elements๋ฅผ ๋๊ณ ๊ฒฝ์ํ๋ค.
1. Scalar
https://github.com/scalar/scalar

Scalar๋ OpenAPI 3.0 ๋ช
์ธ์ ๋ฐ๋ผ ๋ ๋๋ง ํ๊ณ ์์ผ๋ฉฐ Notion๊ณผ ๋น์ทํ ๋์์ธ์ ๊ฐ์ง ๋ฌธ์ํ ๋๊ตฌ์ด๋ค. ๋์์ธ ์์ฒด๋ ๋ง์์ ๋ค์๊ณ , ๊ฐ๋
์ฑ๋ ์ข์์ง๋ง ์์ธ์ง ์์ ์ฌ์ง์ฒ๋ผ ๊ฐ์ ๋ถ๋ถ์ ์ ํํ์ ๋ ์ ๋๋ก ๋์ด๊ฐ์ง ์๋ ๋ฒ๊ทธ๊ฐ ์์๋ค.
2. Stoplight Elements
https://github.com/stoplightio/elements
๊ทธ๋์ ํ์ ๋ฌธ์ํ ํด์ Stoplight Elements๋ก ์ ํํ๋ค. ๋์์ธ๋ ์๋ คํ๊ณ , ๊ฐ๋
์ฑ๋ ์ข์๋ค.

๊ทธ๋ฆฌ๊ณ ๊ฐ์๊ฐ ์ ์ ํ๋์ง ์๋ ๋ฌธ์ ๋ ์์๋ค.
์ ์ฉ
์ ์ฉ์ ๊ฐ๋จํ๋ค. React Component๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ค์ํ๊ฒ ์กด์ฌํ์ง๋ง, ์ ์ ํ์ผ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>์ฝ์คํฝ API ๋ฌธ์</title>
<meta name="description" content="์ฝ์คํฝ API ๋ฌธ์">
<!-- Stoplight Elements CSS -->
<link rel="stylesheet" href="https://unpkg.com/@stoplight/elements@8/styles.min.css">
</head>
<body>
<elements-api apiDescriptionUrl="/v3/api-docs"
router="hash"
layout="sidebar"
/>
<!-- Stoplight Elements JS -->
<script src="https://unpkg.com/@stoplight/elements@8/web-components.min.js"></script>
</body>
</html>
์ด์ธ์๋ application.yml์์ swagger-ui ๊ด๋ จํ ์ค์ ์ ์ ๊ฑฐํ์๋ค!


์์ผ๋ก์ ๊ณํ
์๋ฌด๋๋ ํ์ฌ๋ ๋ฌธ์ํ์ ๋ค์ด๊ฐ๋ ๋ด์ฉ๋ค์ ์ง์ ์ด๋ ธํ ์ด์ ์ผ๋ก ์์ฑํด์ค์ผ ํ๋ค๋ณด๋ ํด๋จผ ์๋ฌ๊ฐ ๋ค์ด๊ฐ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๋ค. ๊ทธ๋ ๊ธฐ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ์ ์์ ์ ์งํํ๋ค. ํ์ง๋ง, ์ถํ API์ ๊ฐ์๊ฐ ๋ ์ฆ๊ฐํ๋ค๋ฉด, Spring Rest Docs์ RestDocs-Api-Spec๋ฅผ ํจ๊ป ํ์ฉํ์ฌ OpenAPI 3.0 + Stoplight๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ์ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค.
'๊ฐ๋ฐ > ๋ฐ์ธ๊ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| OSRM Match API๋ก ๋ฌ๋ ์ฝ์ค ๋ฐ์ดํฐ ์ขํ ๋ณด์ ํ๊ธฐ (0) | 2025.12.14 |
|---|---|
| ๊ธธ์ฐพ๊ธฐ, ๊ฒฝ๋ก ๋ณด์ ์ ํต์ฌ OSRM ํบ์๋ณด๊ธฐ (0) | 2025.12.08 |
| ํ๋ก์ ํธ์์ Batch Job ๋ก๊ทธ์ MDC๋ฅผ ์ ์ฉํ๋ค. (0) | 2025.10.26 |
| ๋๋ฉ์ธ ๊ฐ์ฒด ์์ฑ ๋ก์ง ๊ด๋ จ ๊ณ ๋ฏผ (0) | 2025.10.06 |
| ์๋ฒ์์ ์ง์์ ์ธ OutOfMemory๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ํด๊ฒฐ (3) | 2025.09.29 |