API Document Validator
๐ API ํ์ ๊ฒ์ฆโ
๊ฐ์โ
๊ฒฝ๋ก: ์ข์ธก ์ฌ์ด๋๋ฐ > API ํ์ ๊ฒ์ฆ
๋ฉ๋ด ํ์ : ๊ทธ๋ฃน ๋ฉ๋ด (ํ์ ๋ฉ๋ด ํฌํจ)
API ํ์ ๊ฒ์ฆ์ API ์คํ์ ํ์๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ฒ์ฆํ๊ณ , ๊ฒ์ฆ ํํฉ์ ๋ชจ๋ํฐ๋งํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒโ
- ์ข์ธก ์ฌ์ด๋๋ฐ์์ย "API ํ์ ๊ฒ์ฆ"ย ๋ฉ๋ด๋ฅผ ํด๋ฆญํ์ฌ ํ์ ๋ฉ๋ด๋ฅผ ํ์ฅํฉ๋๋ค
- ํ์ฅ๋ ํ์ ๋ฉ๋ด์์ ์ํ๋ ๊ธฐ๋ฅ์ ์ ํํฉ๋๋ค
๐กย ์ฐธ๊ณ : API ํ์ ๊ฒ์ฆ์ ๊ทธ๋ฃน ๋ฉ๋ด์ด๋ฏ๋ก ํด๋ฆญ ์ ํ์ ๋ฉ๋ด๊ฐ ํ์ฅ/์ถ์๋ฉ๋๋ค.
ํ์ ๋ฉ๋ด ๊ตฌ์ฑโ
API ํ์ ๊ฒ์ฆ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ๋ฉด ๋ค์ ํ์ ๋ฉ๋ด๋ค์ด ํ์๋ฉ๋๋ค:
- API ํ์ ์ค์ ย - API ํ์ ๊ฒ์ฆ ๊ท์น ์ค์
- API ํ์ ํํฉ ๋์๋ณด๋ย - ๊ฒ์ฆ ํํฉ ์กฐํ ๋ฐ ๋ชจ๋ํฐ๋ง
API ํ์ ์ค์ โ
๊ฒฝ๋ก: ์ข์ธก ์ฌ์ด๋๋ฐ > API ํ์ ๊ฒ์ฆ > API ํ์ ์ค์

๊ธฐ๋ฅ ์ค๋ช โ
API ํ์ ์ค์ ํ์ด์ง์์๋ API Docs Validator๋ฅผ ์ํ ๊ฒ์ฆ ๋ฃฐ์ ์ ๊ด๋ฆฌํ๊ณ ํ๋ก์ ํธ์ ๋งคํํ ์ ์์ต๋๋ค.
ํ์ด์ง ๊ตฌ์ฑโ
์ฃผ์ ์น์
- API Docs Validator ์ค์
- ๋ฃฐ์ ๊ด๋ฆฌ
- ํ๋ก์ ํธ ๋งคํ
- ๊ฒ์ฆ ๋ฃฐ์
๊ด๋ฆฌ
- ๊ธฐ์กด ๋ฃฐ์ ๋ชฉ๋ก ๋ฐ ๊ด๋ฆฌ
- ์ ๋ฃฐ์ ์ถ๊ฐย ๋ฒํผ
- ํ๋ก์ ํธ ์ ํ
- ํ๋ก์ ํธ ๋๋กญ๋ค์ด์ผ๋ก ํน์ ํ๋ก์ ํธ ์ ํ ๊ฐ๋ฅ
์ฃผ์ ๊ธฐ๋ฅโ
- ๊ฒ์ฆ ๋ฃฐ์ ๊ด๋ฆฌ: ๊ฒ์ฆ์ ์ฌ์ฉํ ๋ฃฐ์ ์ ์์ฑ, ์์ , ์ญ์
- ์ ๋ฃฐ์ ์ถ๊ฐ: ์๋ก์ด ๊ฒ์ฆ ๋ฃฐ์ ์ ์์ฑ
- ํ๋ก์ ํธ ๋งคํ: ๊ฒ์ฆ ๋ฃฐ์ ์ ํน์ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ
- ๊ธฐ๋ณธ ๋ฃฐ์
:
- OWASP Top10: OWASP Top 10 ๋ณด์ ์ทจ์ฝ์ ๊ฒ์ฆ ๋ฃฐ์
- OAS(2.X, 3.X): OpenAPI Specification ๊ฒ์ฆ ๋ฃฐ์
์ฌ์ฉ ๋ฐฉ๋ฒโ
- ์ข์ธก ์ฌ์ด๋๋ฐ์์ย "API ํ์ ๊ฒ์ฆ"ย ๋ฉ๋ด๋ฅผ ํด๋ฆญํ์ฌ ํ์ ๋ฉ๋ด๋ฅผ ํ์ฅํฉ๋๋ค
- ํ์ ๋ฉ๋ด์์ **"API ํ์ ์ค์ "**์ ์ ํํฉ๋๋ค
- ํ๋ก์ ํธย ๋๋กญ๋ค์ด์์ ์์ ํ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค (์ ํ์ฌํญ)
- ๊ฒ์ฆ ๋ฃฐ์ ๊ด๋ฆฌย ์น์ ์์ ๊ธฐ์กด ๋ฃฐ์ ์ ํ์ธํ๊ฑฐ๋ ๊ด๋ฆฌํฉ๋๋ค
- ์ ๋ฃฐ์ ์ถ๊ฐย ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด ๊ฒ์ฆ ๋ฃฐ์ ์ ์์ฑํฉ๋๋ค
- ๋ฃฐ์ ์ค์ ์๋ฃ ํ ์ ์ฅํฉ๋๋ค
๋ฃฐ์ ์ ํโ
- OWASP Top10: ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ์ทจ์ฝ์ ์์ 10๊ฐ ํญ๋ชฉ ๊ฒ์ฆ
- OAS(2.X, 3.X): OpenAPI Specification 2.x ๋ฐ 3.x ๋ฒ์ ๊ฒ์ฆ
์ฃผ์์ฌํญโ
- โ ๏ธ ๋ฃฐ์ ์์ฑ ๋ฐ ์์ ํ ๋ฐ๋์ ์ ์ฅํด์ผ ์ ์ฉ๋ฉ๋๋ค
- โ ๏ธ ํ๋ก์ ํธ ๋งคํ์ ํน์ ํ๋ก์ ํธ์๋ง ๊ฒ์ฆ ๊ท์น์ ์ ์ฉํ ๋ ์ฌ์ฉํฉ๋๋ค
API ํ์ ํํฉ ๋์๋ณด๋โ
๊ฒฝ๋ก: ์ข์ธก ์ฌ์ด๋๋ฐ > API ํ์ ๊ฒ์ฆ > API ํ์ ํํฉ ๋์๋ณด๋

๊ธฐ๋ฅ ์ค๋ช โ
API ํ์ ํํฉ ๋์๋ณด๋๋ API ํ์ ๊ฒ์ฆ ์คํ ์ด๋ ฅ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ๊ณ ๋ชจ๋ํฐ๋งํ ์ ์๋ ๋์๋ณด๋์ ๋๋ค.
ํ์ด์ง ๊ตฌ์ฑโ
๊ฒ์ฆ ์ด๋ ฅ ํ ์ด๋ธ
๊ฒ์ฆ ์คํ ์ด๋ ฅ์ ํ ์ด๋ธ ํํ๋ก ํ์ธํ ์ ์์ต๋๋ค.
| ์ปฌ๋ผ๋ช | ์ค๋ช |
|---|---|
| ์์ฒญ์ | ๊ฒ์ฆ์ ์์ฒญํ ์ฌ์ฉ์ |
| ํ๋ก์ ํธ๋ช | ๊ฒ์ฆ ๋์ ํ๋ก์ ํธ |
| API๋ช | ๊ฒ์ฆ ๋์ API |
| ์ํ | ๊ฒ์ฆ ์ํ (ํต๊ณผ/์คํจ ๋ฑ) |
| Error Count | ๋ฐ๊ฒฌ๋ ์ค๋ฅ ๊ฐ์ |
| Error ์์ธ | ๊ฒ์ฆ ์คํจ ์์ธ |
| ๊ฒ์ฆ ์ผ์ | ๊ฒ์ฆ์ด ์คํ๋ ๋ ์ง/์๊ฐ |
| ์ก์ | ์์ธ ์กฐํ, ์ฌ๊ฒ์ฆ ๋ฑ ์ถ๊ฐ ์์ |
์ฃผ์ ๊ธฐ๋ฅโ
- ๊ฒ์ฆ ์ด๋ ฅ ์กฐํ: ๊ณผ๊ฑฐ ๊ฒ์ฆ ์คํ ์ด๋ ฅ ํ์ธ
- ๊ฒ์ฆ ์ํ ๋ชจ๋ํฐ๋ง: ๊ฒ์ฆ ํต๊ณผ/์คํจ ์ํ ํ์ธ
- ์ค๋ฅ ์ ๋ณด ํ์ธ: Error Count ๋ฐ Error ์์ธ ํ์ธ
- ํํฐ๋ง: ํ๋ก์ ํธ ๋๋กญ๋ค์ด์ ํตํ ํํฐ๋ง (์ ํ์ฌํญ)
์ฌ์ฉ ๋ฐฉ๋ฒโ
- ์ข์ธก ์ฌ์ด๋๋ฐ์์ย "API ํ์ ๊ฒ์ฆ"ย ๋ฉ๋ด๋ฅผ ํด๋ฆญํ์ฌ ํ์ ๋ฉ๋ด๋ฅผ ํ์ฅํฉ๋๋ค
- ํ์ ๋ฉ๋ด์์ **"API ํ์ ํํฉ ๋์๋ณด๋"**๋ฅผ ์ ํํฉ๋๋ค
- ๊ฒ์ฆ ์ด๋ ฅย ํ ์ด๋ธ์์ ๊ฒ์ฆ ์คํ ์ด๋ ฅ์ ํ์ธํฉ๋๋ค
- ํ๋ก์ ํธย ๋๋กญ๋ค์ด์์ ํน์ ํ๋ก์ ํธ๋ฅผ ์ ํํ์ฌ ํํฐ๋งํฉ๋๋ค (์ ํ์ฌํญ)
- ํ ์ด๋ธ์ย ์ก์ ย ์ปฌ๋ผ์์ ์์ธ ์ ๋ณด ์กฐํ๋ ์ถ๊ฐ ์์ ์ ์ํํฉ๋๋ค
ํ ์ด๋ธ ๊ธฐ๋ฅโ
- ํ์ด์ง: ๊ฒ์ฆ ์ด๋ ฅ์ด ๋ง์ ๊ฒฝ์ฐ ํ์ด์ง ๋จ์๋ก ์กฐํ
- ์ ๋ ฌ: ๊ฐ ์ปฌ๋ผ ํค๋ ํด๋ฆญ์ผ๋ก ์ ๋ ฌ ๊ธฐ์ค ๋ณ๊ฒฝ (๊ฐ๋ฅํ ๊ฒฝ์ฐ)
- ์์ธ ์กฐํ: ์ก์ ์ปฌ๋ผ์ ๋ฒํผ์ผ๋ก ์์ธ ์ ๋ณด ํ์ธ
ํ์ฉ ํโ
- ๐กย ํ๋ก์ ํธ ํํฐ: ํน์ ํ๋ก์ ํธ์ ๊ฒ์ฆ ์ด๋ ฅ๋ง ํ์ธํ๋ ค๋ฉด ํ๋ก์ ํธ ๋๋กญ๋ค์ด์ ํ์ฉํ์ธ์
- ๐กย ์ํ ํ์ธ:ย ์ํย ์ปฌ๋ผ์ผ๋ก ๊ฒ์ฆ ํต๊ณผ/์คํจ ์ฌ๋ถ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์์ต๋๋ค
- ๐กย ์ค๋ฅ ๋ถ์:ย Error Count์ย Error ์์ธย ์ปฌ๋ผ์ผ๋ก ๊ฒ์ฆ ์คํจ ์์ธ์ ํ์ ํ ์ ์์ต๋๋ค
- ๐กย ์ต์ ์ ๋ณด: ์ต์ ๊ฒ์ฆ ํํฉ์ ํ์ธํ๋ ค๋ฉด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ธ์
Swagger ๋ฌธ์ ํ์ ๊ฒ์ฆโ
๊ฒฝ๋ก: ์ข์ธก ์ฌ์ด๋๋ฐ > API ํ์ ๊ฒ์ฆ > API ํ์ ๊ฒ์ฆ

๊ธฐ๋ฅ ์ค๋ช โ
Swagger ๋ฌธ์ ํ์ ๊ฒ์ฆ์ ๊ฐ๋ฐ๋ API์ Swagger/OpenAPI ์ ์๋ฅผ ์ ๋ ฅํ๊ณ , ์ค์ ๋ ๊ฒ์ฆ ๊ท์น์ ๋ฐ๋ผ ๊ฒ์ฆํ์ฌ ๋ฌธ์์ ์ ํจ์ฑ์ ํ์ธํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ค์ ์ ๋ฌด์์ ๊ฐ๋ฐํ๊ณ ์์ฑ๋ Swagger ๋ฌธ์๋ฅผ ์ด ํ๋ฉด์์ ๊ฒ์ฆํ์ฌ ํ์ค ์ค์ ์ฌ๋ถ์ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
ํ์ด์ง ๊ตฌ์ฑโ
1. ํ๋ก์ ํธ ์ค์ ์น์
- ๊ฒ์ฆํ ํ๋ก์ ํธ: ๋๋กญ๋ค์ด์์ ๊ฒ์ฆํ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค
- ์:ย
otel-prj
- ์:ย
- ํ๋ก์ ํธ๋ฅผ ์ ํํ๋ฉด ํด๋น ํ๋ก์ ํธ์ ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์น์ด ์๋์ผ๋ก ๋ก๋๋ฉ๋๋ค
2. ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์น ์น์
์ ํํ ํ๋ก์ ํธ์ ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์น ๋ฃฐ์ ๊ณผ ๊ท์น ๋ชฉ๋ก์ ํ์ํฉ๋๋ค:
- Ruleset๋ช
: ์ ์ฉ๋ ๋ฃฐ์
์ด๋ฆ (์:ย
MCP Swagger) - ์ ์ฉ ๊ท์น ๋ชฉ๋ก:
mcp-operation-id-required: operationId ํ์ ๊ฒ์ฆmcp-operation-id-style: operationId ์คํ์ผ ๊ฒ์ฆmcp-operation-summary-required: operation summary ํ์ ๊ฒ์ฆmcp-json-request-body: JSON request body ๊ฒ์ฆmcp-json-request-body-schema: JSON request body schema ๊ฒ์ฆ- ๊ธฐํ ๊ท์น๋ค
- ๊ท์น ๊ฐ์: "์ธ์ ์ด N๊ฐ ๊ท์น ์ ์ฉ๋จ" ํํ๋ก ํ์
3. Swagger JSON ์ ๋ ฅ ์น์
- ์
๋ ฅ ํ๋: ๋๊ท๋ชจ ํ
์คํธ ์์ญ์ Swagger/OpenAPI JSON์ ์
๋ ฅํฉ๋๋ค
- ๊ธฐ๋ณธ ์๋ด ๋ฌธ๊ตฌ: "Swagger JSON์ ์ ๋ ฅํ์ธ์"
- OpenAPI 3.0 ํ์์ Swagger ์ ์๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค
- ์ํ ๋ก๋ ๋ฒํผ: ์
๋ ฅ ํ๋ ์ฐ์ธก ์๋จ์ ์์นํ ํ๋์ ๋ฒํผ
- ํด๋ฆญ ์ ์ํ Swagger ์ ์(Petstore ์์ ๋ฑ)๊ฐ ์ ๋ ฅ ํ๋์ ์๋์ผ๋ก ๋ก๋๋ฉ๋๋ค
- ์ํ์ ํตํด ์ ๋ ฅ ํ์์ ํ์ธํ๊ณ ํ ์คํธํ ์ ์์ต๋๋ค
- ๊ฒ์ฆ ์ํ ํ์: ์
๋ ฅ ํ๋ ํ๋จ์ JSON ์ ํจ์ฑ ๊ฒ์ฆ ๊ฒฐ๊ณผ ํ์
Valid JSON: JSON ํ์์ด ์ ํจํ ๊ฒฝ์ฐ ๋ น์ ์ฒดํฌ ํ์OpenAPI Spec: OpenAPI ์คํ์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ ๋ น์ ์ฒดํฌ ํ์
- SWAGGER ๊ฒ์ฆ ์คํ ๋ฒํผ: ์ค์ ํ๋จ์ ์์นํ ํฌ๊ณ ํ๋์ ๋ฒํผ
- ์ ๋ ฅ๋ Swagger JSON์ ๋ํด ์ค์ ๋ ๊ฒ์ฆ ๊ท์น์ ์คํํฉ๋๋ค
- ํด๋ฆญ ์ ๊ฒ์ฆ์ด ์์๋๊ณ ๊ฒฐ๊ณผ๊ฐ ํ๋จ์ ํ์๋ฉ๋๋ค
- ๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ ๋ฒํผ: ๊ฒ์ฆ ์คํ ๋ฒํผ ์์ ์์นํ ๋
น์ ๋ฒํผ
- ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ๋ด๋ณด๋ผ ์ ์์ต๋๋ค
4. ๊ฒ์ฆ ๊ฒฐ๊ณผ ์น์
๊ฒ์ฆ ์คํ ํ ํ๋จ์ ๊ฒ์ฆ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค:
์์ฝ ์ ๋ณดย (์๋จ ์นด๋ ํํ):
- ์ค๋ฅ (ERROR): ๋นจ๊ฐ์ ๋ฐฐ๊ฒฝ์ผ๋ก ํ์๋๋ ์ค๋ฅ ๊ฐ์
- ์:ย
1 ์ค๋ฅ
- ์:ย
- ๊ฒฝ๊ณ (WARNING): ์ฃผํฉ์ ๋ฐฐ๊ฒฝ์ผ๋ก ํ์๋๋ ๊ฒฝ๊ณ ๊ฐ์
- ์:ย
0 ๊ฒฝ๊ณ
- ์:ย
- ํต๊ณผ (SUCCESS): ๋
น์ ๋ฐฐ๊ฒฝ์ผ๋ก ํ์๋๋ ํต๊ณผ ๊ฐ์
- ์:ย
8 ํต๊ณผ
- ์:ย
- FAIL ์ด N๊ฐ ์ด์: ๋นจ๊ฐ์ ๋ ์ด๋ธ๋ก ์ ์ฒด ์ด์ ๊ฐ์ ํ์
- ์:ย
FAIL ์ด 1๊ฐ ์ด์
- ์:ย
์์ธ ๊ฒฐ๊ณผ ํ ์ด๋ธ:
| ์ปฌ๋ผ๋ช | ์ค๋ช |
|---|---|
| ์ฌ๊ฐ๋ | ERRORย (๋นจ๊ฐ์) ๋๋ย SUCCESSย (๋
น์)๋ก ํ์ |
| ๊ท์น | ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์น ์ด๋ฆ (์:ย mcp-json-request-body) |
| ๋ฉ์์ง | ๊ฒ์ฆ ๊ฒฐ๊ณผ ๋ฉ์์ง (์:ย "content" property must have...) |
| ๊ฒฝ๋ก | ์ค๋ฅ๊ฐ ๋ฐ์ํ Swagger ์ ์ ๋ด์ ๊ฒฝ๋ก |
| Ruleset๋ช | ํด๋น ๊ท์น์ด ์ํ ๋ฃฐ์ ์ด๋ฆ |
| ์ก์ | ์์ธ๋ณด๊ธฐย ๋ฒํผ์ผ๋ก ๊ฐ ํญ๋ชฉ์ ์์ธ ์ ๋ณด ํ์ธ ๊ฐ๋ฅ |
ํ ์ด๋ธ ๊ธฐ๋ฅ:
- ํ์ด์ง: ๊ฒ์ฆ ๊ฒฐ๊ณผ๊ฐ ๋ง์ ๊ฒฝ์ฐ ํ์ด์ง ๋จ์๋ก ์กฐํ (์: "Rows per page: 10")
- ์ ๋ ฌ: ์ปฌ๋ผ ํค๋ ํด๋ฆญ์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅ
- ์์ธ๋ณด๊ธฐ: ๊ฐ ํญ๋ชฉ์ย ์ก์ ย ์ปฌ๋ผ์์ย ์์ธ๋ณด๊ธฐย ๋ฒํผ ํด๋ฆญ์ผ๋ก ์์ธ ์ ๋ณด ํ์ธ
์ฃผ์ ๊ธฐ๋ฅโ
1. ํ๋ก์ ํธ๋ณ ๊ฒ์ฆ ๊ท์น ์ ์ฉ
- ํ๋ก์ ํธ๋ฅผ ์ ํํ๋ฉด ํด๋น ํ๋ก์ ํธ์ ๋งคํ๋ ๊ฒ์ฆ ๊ท์น์ด ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค
- ๊ฐ ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅธ ๊ฒ์ฆ ๊ท์น์ ์ ์ฉํ ์ ์์ต๋๋ค
2. Swagger JSON ์ ๋ ฅ ๋ฐ ๊ฒ์ฆ
- ๊ฐ๋ฐ๋ API์ Swagger/OpenAPI ์ ์๋ฅผ ์ง์ ์ ๋ ฅํ์ฌ ๊ฒ์ฆํ ์ ์์ต๋๋ค
- JSON ํ์ ์ ํจ์ฑ๊ณผ OpenAPI ์คํ ์ค์ ์ฌ๋ถ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค
3. ์ํ ๋ก๋ ๊ธฐ๋ฅ
- ์ํ ๋ก๋ย ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ํ Swagger ์ ์๊ฐ ์๋์ผ๋ก ์ ๋ ฅ๋ฉ๋๋ค
- ์ํ์ ํตํด ์ ๋ ฅ ํ์์ ํ์ธํ๊ณ ๊ธฐ๋ฅ์ ํ ์คํธํ ์ ์์ต๋๋ค
4. ๊ฒ์ฆ ์คํ ๋ฐ ๊ฒฐ๊ณผ ํ์ธ
- SWAGGER ๊ฒ์ฆ ์คํย ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ค์ ๋ ๋ชจ๋ ๊ฒ์ฆ ๊ท์น์ด ์คํ๋ฉ๋๋ค
- ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ ์ค๋ฅ, ๊ฒฝ๊ณ , ํต๊ณผ๋ก ๋ถ๋ฅ๋์ด ํ์๋ฉ๋๋ค
- ๊ฐ ๊ฒ์ฆ ํญ๋ชฉ์ ์์ธ ์ ๋ณด(๊ท์น, ๋ฉ์์ง, ๊ฒฝ๋ก)๋ฅผ ํ์ธํ ์ ์์ต๋๋ค
5. ๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ
- ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ๋ด๋ณด๋ด์ด ๋ฌธ์ํํ๊ฑฐ๋ ๊ณต์ ํ ์ ์์ต๋๋ค
์ฌ์ฉ ๋ฐฉ๋ฒโ
๊ธฐ๋ณธ ๊ฒ์ฆ ํ๋ก์ธ์ค
- ํ๋ก์ ํธ ์ ํ: ์๋จ์ย ๊ฒ์ฆํ ํ๋ก์ ํธย ๋๋กญ๋ค์ด์์ ๊ฒ์ฆํ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค
- ๊ฒ์ฆ ๊ท์น ํ์ธ:ย ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์นย ์น์ ์์ ์ ์ฉ๋ ๊ท์น ๋ชฉ๋ก์ ํ์ธํฉ๋๋ค
- Swagger JSON ์
๋ ฅ:
- ๋ฐฉ๋ฒ 1: ๊ฐ๋ฐ๋ API์ Swagger JSON์ ๋ณต์ฌํ์ฌ ์ ๋ ฅ ํ๋์ ๋ถ์ฌ๋ฃ์ต๋๋ค
- ๋ฐฉ๋ฒ 2:ย ์ํ ๋ก๋ย ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ํ Swagger๋ฅผ ๋ก๋ํ๊ณ ์์ ํฉ๋๋ค
- JSON ์ ํจ์ฑ ํ์ธ: ์
๋ ฅ ํ๋ ํ๋จ์ย
Valid JSON๊ณผยOpenAPI Specย ์ฒดํฌ ํ์๋ฅผ ํ์ธํฉ๋๋ค - ๊ฒ์ฆ ์คํ:ย SWAGGER ๊ฒ์ฆ ์คํย ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค
- ๊ฒฐ๊ณผ ํ์ธ: ํ๋จ์ย ๊ฒ์ฆ ๊ฒฐ๊ณผย ์น์ ์์ ์์ฝ ์ ๋ณด์ ์์ธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค
- ์ค๋ฅ ์์ : ์ค๋ฅ๊ฐ ๋ฐ๊ฒฌ๋ ๊ฒฝ์ฐ ๋ฉ์์ง์ ๊ฒฝ๋ก๋ฅผ ์ฐธ๊ณ ํ์ฌ Swagger ์ ์๋ฅผ ์์ ํฉ๋๋ค
- ์ฌ๊ฒ์ฆ: ์์ ํ ๋ค์ ๊ฒ์ฆ์ ์คํํ์ฌ ๋ชจ๋ ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํฉ๋๋ค
์ค์ ์ ๋ฌด ํ์ฉ ์๋๋ฆฌ์ค
์๋๋ฆฌ์ค 1: ๊ฐ๋ฐ ์๋ฃ ํ Swagger ๊ฒ์ฆ
- API ๊ฐ๋ฐ์ ์๋ฃํ๊ณ Swagger/OpenAPI ์ ์๋ฅผ ์์ฑํฉ๋๋ค
- ์ข์ธก ์ฌ์ด๋๋ฐ์์ย API ๊ด๋ฆฌย >ย API ํ์ ๊ฒ์ฆย ๋ฉ๋ด๋ก ์ด๋ํฉ๋๋ค
- ๊ฒ์ฆํ ํ๋ก์ ํธ์์ ํด๋น ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค
- ์์ฑ๋ Swagger JSON์ ๋ณต์ฌํ์ฌ ์ ๋ ฅ ํ๋์ ๋ถ์ฌ๋ฃ์ต๋๋ค
- SWAGGER ๊ฒ์ฆ ์คํย ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค
- ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ณ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ์์ ํฉ๋๋ค
- ๋ชจ๋ ๊ฒ์ฆ์ ํต๊ณผํ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค
์๋๋ฆฌ์ค 2: ์ํ์ ํ์ฉํ ๊ฒ์ฆ ํ ์คํธ
- ๊ฒ์ฆํ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค
- ์ํ ๋ก๋ย ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ํ Swagger๋ฅผ ๋ก๋ํฉ๋๋ค
- ์ํ Swagger๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ค์ Swagger ์ ์๋ฅผ ์์ฑํฉ๋๋ค
- SWAGGER ๊ฒ์ฆ ์คํย ๋ฒํผ์ ํด๋ฆญํ์ฌ ๊ฒ์ฆํฉ๋๋ค
- ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ณ ํ์ํ ์์ ์ ์งํํฉ๋๋ค
์๋๋ฆฌ์ค 3: ๊ฒ์ฆ ๊ท์น ์ค์ ํ์ธ
- ํ๋ก์ ํธ๋ฅผ ์ ํํ์ฌ ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์น์ ํ์ธํฉ๋๋ค
- Swagger JSON์ ์ ๋ ฅํฉ๋๋ค
- ๊ฒ์ฆ์ ์คํํฉ๋๋ค
- ์์ธ ๊ฒฐ๊ณผ ํ ์ด๋ธ์์ ๊ฐ ๊ท์น๋ณ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค
ERRORย ๋๋ยWARNING์ด ์๋ ๊ท์น์ ํ์ธํ๊ณ ํด๋น ๋ถ๋ถ์ ์์ ํฉ๋๋ค- ์์ธ๋ณด๊ธฐย ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ค๋ฅ์ ์์ธ ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค
ํ์ฉ ์์โ
์์ 1: ๊ธฐ๋ณธ ๊ฒ์ฆ ์คํ
- ํ๋ก์ ํธย
otel-prjย ์ ํ - ์ํ ๋ก๋ย ๋ฒํผ ํด๋ฆญํ์ฌ ์ํ Swagger ๋ก๋
- SWAGGER ๊ฒ์ฆ ์คํย ๋ฒํผ ํด๋ฆญ
- ๊ฒ์ฆ ๊ฒฐ๊ณผ ํ์ธ:
- ์ค๋ฅ: 1๊ฐ
- ๊ฒฝ๊ณ : 0๊ฐ
- ํต๊ณผ: 8๊ฐ
์์ 2: ์ค์ Swagger ๊ฒ์ฆ
- ๊ฐ๋ฐ ์๋ฃ๋ API์ Swagger JSON ๋ณต์ฌ
- ํ๋ก์ ํธ ์ ํ (์:ย
otel-prj) - Swagger JSON์ ์ ๋ ฅ ํ๋์ ๋ถ์ฌ๋ฃ๊ธฐ
- JSON ์ ํจ์ฑ ํ์ธ (
Valid JSON,ยOpenAPI Specย ์ฒดํฌ) - SWAGGER ๊ฒ์ฆ ์คํย ๋ฒํผ ํด๋ฆญ
- ๊ฒ์ฆ ๊ฒฐ๊ณผ์์ ์ค๋ฅ ํ์ธ:
- ์:ย
mcp-json-request-bodyย ๊ท์น ์๋ฐ - ๋ฉ์์ง:ย
"content" property must have required property "application/json" - ๊ฒฝ๋ก:ย
paths./pet/{petId}/uploadImage.post.requestBody.content
- ์:ย
- Swagger ์ ์์์ ํด๋น ๊ฒฝ๋ก์ ์ค๋ฅ ์์
- ์์ ํ ์ฌ๊ฒ์ฆ ์คํ
- ๋ชจ๋ ๊ฒ์ฆ ํต๊ณผ ํ์ธ
์์ 3: ๊ฒ์ฆ ๊ฒฐ๊ณผ ๋ถ์
- ๊ฒ์ฆ ์คํ ํย ๊ฒ์ฆ ๊ฒฐ๊ณผย ์น์ ํ์ธ
- ์์ฝ ์ ๋ณด์์ ์ ์ฒด ์ด์ ๊ฐ์ ํ์ธ (์:ย
FAIL ์ด 1๊ฐ ์ด์) - ์์ธ ๊ฒฐ๊ณผ ํ
์ด๋ธ์์ ๊ฐ ํญ๋ชฉ ํ์ธ:
- ์ฌ๊ฐ๋:ย
ERROR์ธ ํญ๋ชฉ ์ฐ์ ํ์ธ - ๊ท์น: ์ด๋ค ๊ท์น์์ ์คํจํ๋์ง ํ์ธ
- ๋ฉ์์ง: ๊ตฌ์ฒด์ ์ธ ์ค๋ฅ ๋ด์ฉ ํ์ธ
- ๊ฒฝ๋ก: Swagger ์ ์์์ ์์ ํด์ผ ํ ์์น ํ์ธ
- ์ฌ๊ฐ๋:ย
- ์์ธ๋ณด๊ธฐย ๋ฒํผ ํด๋ฆญํ์ฌ ์ถ๊ฐ ์ ๋ณด ํ์ธ
- ์ค๋ฅ ์์ ํ ์ฌ๊ฒ์ฆ
์ฃผ์์ฌํญโ
- โ ๏ธย ํ๋ก์ ํธ ์ ํ ํ์: ๊ฒ์ฆ ๊ท์น์ ํ๋ก์ ํธ๋ณ๋ก ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ๋ฐ๋์ ์ฌ๋ฐ๋ฅธ ํ๋ก์ ํธ๋ฅผ ์ ํํด์ผ ํฉ๋๋ค
- โ ๏ธย JSON ํ์ ์ค์: ์ ๋ ฅํ Swagger๋ ์ ํจํ JSON ํ์์ด์ด์ผ ํ๋ฉฐ, OpenAPI ์คํ์ ๋ฐ๋ผ์ผ ํฉ๋๋ค
- โ ๏ธย ๊ฒ์ฆ ๊ท์น ํ์ธ: ํ๋ก์ ํธ์ ์ ์ฉ๋ ๊ฒ์ฆ ๊ท์น์ ๋ฏธ๋ฆฌ ํ์ธํ์ฌ ํ์ํ ํญ๋ชฉ์ ์ค์ํ๋๋ก Swagger๋ฅผ ์์ฑํ์ธ์
- โ ๏ธย ์ค๋ฅ ์์ ํ ์ฌ๊ฒ์ฆ: ์ค๋ฅ๋ฅผ ์์ ํ ํ์๋ ๋ฐ๋์ ์ฌ๊ฒ์ฆ์ ์คํํ์ฌ ๋ชจ๋ ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํ์ธ์
- โ ๏ธย ๊ฒ์ฆ ๊ฒฐ๊ณผ ์ ์ฅ: ์ค์ํ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ย ๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐย ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ์ฅํ์ธ์
ํ์ฉ ํโ
- ๐กย ์ํ ํ์ฉ: ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐย ์ํ ๋ก๋ย ๋ฒํผ์ ํ์ฉํ์ฌ ์ ๋ ฅ ํ์์ ํ์ธํ์ธ์
- ๐กย ์ค์๊ฐ ๊ฒ์ฆ: JSON์ ์
๋ ฅํ๋ ๋์ย
Valid JSON๊ณผยOpenAPI Specย ํ์๋ฅผ ํ์ธํ์ฌ ์ค์๊ฐ์ผ๋ก ํ์์ ๊ฒ์ฆํ ์ ์์ต๋๋ค - ๐กย ๊ท์น๋ณ ํ์ธ: ๊ฒ์ฆ ๊ฒฐ๊ณผ ํ ์ด๋ธ์์ ๊ท์น๋ณ๋ก ํํฐ๋งํ์ฌ ํน์ ๊ท์น์ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ง ํ์ธํ ์ ์์ต๋๋ค
- ๐กย ๊ฒฝ๋ก ํ์ฉ: ๊ฒ์ฆ ๊ฒฐ๊ณผ์ย ๊ฒฝ๋กย ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ Swagger ์ ์์์ ์ ํํ ์์น๋ฅผ ์ฐพ์ ์์ ํ ์ ์์ต๋๋ค
- ๐กย ๋ฐ๋ณต ๊ฒ์ฆ: ๊ฐ๋ฐ ์ค๊ฐ์ค๊ฐ ๊ฒ์ฆ์ ์คํํ์ฌ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์์ ํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค