่ทณๅˆฐไธป่ฆๅ†…ๅฎน
็‰ˆๆœฌ๏ผšLatest(v3.0) ๐Ÿ”ฅ

API Document Validator

๐Ÿ“‹ API ํ˜•์‹ ๊ฒ€์ฆโ€‹

๊ฐœ์š”โ€‹

๊ฒฝ๋กœ: ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ” > API ํ˜•์‹ ๊ฒ€์ฆ

๋ฉ”๋‰ด ํƒ€์ž…: ๊ทธ๋ฃน ๋ฉ”๋‰ด (ํ•˜์œ„ ๋ฉ”๋‰ด ํฌํ•จ)

API ํ˜•์‹ ๊ฒ€์ฆ์€ API ์ŠคํŽ™์˜ ํ˜•์‹๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ๊ฒ€์ฆ ํ˜„ํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ ‘๊ทผ ๋ฐฉ๋ฒ•โ€‹

  1. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œย "API ํ˜•์‹ ๊ฒ€์ฆ"ย ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ•˜์œ„ ๋ฉ”๋‰ด๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค
  2. ํ™•์žฅ๋œ ํ•˜์œ„ ๋ฉ”๋‰ด์—์„œ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค

๐Ÿ’กย ์ฐธ๊ณ : API ํ˜•์‹ ๊ฒ€์ฆ์€ ๊ทธ๋ฃน ๋ฉ”๋‰ด์ด๋ฏ€๋กœ ํด๋ฆญ ์‹œ ํ•˜์œ„ ๋ฉ”๋‰ด๊ฐ€ ํ™•์žฅ/์ถ•์†Œ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์œ„ ๋ฉ”๋‰ด ๊ตฌ์„ฑโ€‹

API ํ˜•์‹ ๊ฒ€์ฆ ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ ํ•˜์œ„ ๋ฉ”๋‰ด๋“ค์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

  1. API ํ˜•์‹ ์„ค์ •ย - API ํ˜•์‹ ๊ฒ€์ฆ ๊ทœ์น™ ์„ค์ •
  2. API ํ˜•์‹ ํ˜„ํ™ฉ ๋Œ€์‹œ๋ณด๋“œย - ๊ฒ€์ฆ ํ˜„ํ™ฉ ์กฐํšŒ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

API ํ˜•์‹ ์„ค์ •โ€‹

๊ฒฝ๋กœ: ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ” > API ํ˜•์‹ ๊ฒ€์ฆ > API ํ˜•์‹ ์„ค์ •

๊ธฐ๋Šฅ ์„ค๋ช…โ€‹

API ํ˜•์‹ ์„ค์ • ํŽ˜์ด์ง€์—์„œ๋Š” API Docs Validator๋ฅผ ์œ„ํ•œ ๊ฒ€์ฆ ๋ฃฐ์…‹์„ ๊ด€๋ฆฌํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์™€ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ๊ตฌ์„ฑโ€‹

์ฃผ์š” ์„น์…˜

  1. API Docs Validator ์„ค์ •
    • ๋ฃฐ์…‹ ๊ด€๋ฆฌ
    • ํ”„๋กœ์ ํŠธ ๋งคํ•‘
  2. ๊ฒ€์ฆ ๋ฃฐ์…‹ ๊ด€๋ฆฌ
    • ๊ธฐ์กด ๋ฃฐ์…‹ ๋ชฉ๋ก ๋ฐ ๊ด€๋ฆฌ
    • ์ƒˆ ๋ฃฐ์…‹ ์ถ”๊ฐ€ย ๋ฒ„ํŠผ
  3. ํ”„๋กœ์ ํŠธ ์„ ํƒ
    • ํ”„๋กœ์ ํŠธ ๋“œ๋กญ๋‹ค์šด์œผ๋กœ ํŠน์ • ํ”„๋กœ์ ํŠธ ์„ ํƒ ๊ฐ€๋Šฅ

์ฃผ์š” ๊ธฐ๋Šฅโ€‹

  • ๊ฒ€์ฆ ๋ฃฐ์…‹ ๊ด€๋ฆฌ: ๊ฒ€์ฆ์— ์‚ฌ์šฉํ•  ๋ฃฐ์…‹์„ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ
  • ์ƒˆ ๋ฃฐ์…‹ ์ถ”๊ฐ€: ์ƒˆ๋กœ์šด ๊ฒ€์ฆ ๋ฃฐ์…‹์„ ์ƒ์„ฑ
  • ํ”„๋กœ์ ํŠธ ๋งคํ•‘: ๊ฒ€์ฆ ๋ฃฐ์…‹์„ ํŠน์ • ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ฒฐ
  • ๊ธฐ๋ณธ ๋ฃฐ์…‹:
    • OWASP Top10: OWASP Top 10 ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ฒ€์ฆ ๋ฃฐ์…‹
    • OAS(2.X, 3.X): OpenAPI Specification ๊ฒ€์ฆ ๋ฃฐ์…‹

์‚ฌ์šฉ ๋ฐฉ๋ฒ•โ€‹

  1. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œย "API ํ˜•์‹ ๊ฒ€์ฆ"ย ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ•˜์œ„ ๋ฉ”๋‰ด๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค
  2. ํ•˜์œ„ ๋ฉ”๋‰ด์—์„œ **"API ํ˜•์‹ ์„ค์ •"**์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค
  3. ํ”„๋กœ์ ํŠธย ๋“œ๋กญ๋‹ค์šด์—์„œ ์ž‘์—…ํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค (์„ ํƒ์‚ฌํ•ญ)
  4. ๊ฒ€์ฆ ๋ฃฐ์…‹ ๊ด€๋ฆฌย ์„น์…˜์—์„œ ๊ธฐ์กด ๋ฃฐ์…‹์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค
  5. ์ƒˆ ๋ฃฐ์…‹ ์ถ”๊ฐ€ย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒ€์ฆ ๋ฃฐ์…‹์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
  6. ๋ฃฐ์…‹ ์„ค์ • ์™„๋ฃŒ ํ›„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค

๋ฃฐ์…‹ ์œ ํ˜•โ€‹

  • 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 ์›์ธ ํ™•์ธ
  • ํ•„ํ„ฐ๋ง: ํ”„๋กœ์ ํŠธ ๋“œ๋กญ๋‹ค์šด์„ ํ†ตํ•œ ํ•„ํ„ฐ๋ง (์„ ํƒ์‚ฌํ•ญ)

์‚ฌ์šฉ ๋ฐฉ๋ฒ•โ€‹

  1. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œย "API ํ˜•์‹ ๊ฒ€์ฆ"ย ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ•˜์œ„ ๋ฉ”๋‰ด๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค
  2. ํ•˜์œ„ ๋ฉ”๋‰ด์—์„œ **"API ํ˜•์‹ ํ˜„ํ™ฉ ๋Œ€์‹œ๋ณด๋“œ"**๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค
  3. ๊ฒ€์ฆ ์ด๋ ฅย ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ฆ ์‹คํ–‰ ์ด๋ ฅ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  4. ํ”„๋กœ์ ํŠธย ๋“œ๋กญ๋‹ค์šด์—์„œ ํŠน์ • ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค (์„ ํƒ์‚ฌํ•ญ)
  5. ํ…Œ์ด๋ธ”์˜ย ์•ก์…˜ย ์ปฌ๋Ÿผ์—์„œ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ๋‚˜ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค

ํ…Œ์ด๋ธ” ๊ธฐ๋Šฅโ€‹

  • ํŽ˜์ด์ง•: ๊ฒ€์ฆ ์ด๋ ฅ์ด ๋งŽ์„ ๊ฒฝ์šฐ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์กฐํšŒ
  • ์ •๋ ฌ: ๊ฐ ์ปฌ๋Ÿผ ํ—ค๋” ํด๋ฆญ์œผ๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ (๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ)
  • ์ƒ์„ธ ์กฐํšŒ: ์•ก์…˜ ์ปฌ๋Ÿผ์˜ ๋ฒ„ํŠผ์œผ๋กœ ์ƒ์„ธ ์ •๋ณด ํ™•์ธ

ํ™œ์šฉ ํŒโ€‹

  • ๐Ÿ’กย ํ”„๋กœ์ ํŠธ ํ•„ํ„ฐ: ํŠน์ • ํ”„๋กœ์ ํŠธ์˜ ๊ฒ€์ฆ ์ด๋ ฅ๋งŒ ํ™•์ธํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ๋“œ๋กญ๋‹ค์šด์„ ํ™œ์šฉํ•˜์„ธ์š”
  • ๐Ÿ’กย ์ƒํƒœ ํ™•์ธ:ย ์ƒํƒœย ์ปฌ๋Ÿผ์œผ๋กœ ๊ฒ€์ฆ ํ†ต๊ณผ/์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๐Ÿ’กย ์˜ค๋ฅ˜ ๋ถ„์„:ย 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. ๊ฒฐ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ

  • ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด์–ด ๋ฌธ์„œํ™”ํ•˜๊ฑฐ๋‚˜ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์‚ฌ์šฉ ๋ฐฉ๋ฒ•โ€‹

๊ธฐ๋ณธ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค

  1. ํ”„๋กœ์ ํŠธ ์„ ํƒ: ์ƒ๋‹จ์˜ย ๊ฒ€์ฆํ•  ํ”„๋กœ์ ํŠธย ๋“œ๋กญ๋‹ค์šด์—์„œ ๊ฒ€์ฆํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค
  2. ๊ฒ€์ฆ ๊ทœ์น™ ํ™•์ธ:ย ์ ์šฉ๋œ ๊ฒ€์ฆ ๊ทœ์น™ย ์„น์…˜์—์„œ ์ ์šฉ๋  ๊ทœ์น™ ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  3. Swagger JSON ์ž…๋ ฅ:
    • ๋ฐฉ๋ฒ• 1: ๊ฐœ๋ฐœ๋œ API์˜ Swagger JSON์„ ๋ณต์‚ฌํ•˜์—ฌ ์ž…๋ ฅ ํ•„๋“œ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค
    • ๋ฐฉ๋ฒ• 2:ย ์ƒ˜ํ”Œ ๋กœ๋“œย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ Swagger๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค
  4. JSON ์œ ํšจ์„ฑ ํ™•์ธ: ์ž…๋ ฅ ํ•„๋“œ ํ•˜๋‹จ์˜ย Valid JSON๊ณผย OpenAPI Specย ์ฒดํฌ ํ‘œ์‹œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  5. ๊ฒ€์ฆ ์‹คํ–‰:ย SWAGGER ๊ฒ€์ฆ ์‹คํ–‰ย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค
  6. ๊ฒฐ๊ณผ ํ™•์ธ: ํ•˜๋‹จ์˜ย ๊ฒ€์ฆ ๊ฒฐ๊ณผย ์„น์…˜์—์„œ ์š”์•ฝ ์ •๋ณด์™€ ์ƒ์„ธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  7. ์˜ค๋ฅ˜ ์ˆ˜์ •: ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋œ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€์™€ ๊ฒฝ๋กœ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ Swagger ์ •์˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค
  8. ์žฌ๊ฒ€์ฆ: ์ˆ˜์ • ํ›„ ๋‹ค์‹œ ๊ฒ€์ฆ์„ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

์‹ค์ œ ์—…๋ฌด ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

์‹œ๋‚˜๋ฆฌ์˜ค 1: ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ Swagger ๊ฒ€์ฆ

  1. API ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•˜๊ณ  Swagger/OpenAPI ์ •์˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
  2. ์ขŒ์ธก ์‚ฌ์ด๋“œ๋ฐ”์—์„œย API ๊ด€๋ฆฌย >ย API ํ˜•์‹ ๊ฒ€์ฆย ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค
  3. ๊ฒ€์ฆํ•  ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค
  4. ์ƒ์„ฑ๋œ Swagger JSON์„ ๋ณต์‚ฌํ•˜์—ฌ ์ž…๋ ฅ ํ•„๋“œ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค
  5. SWAGGER ๊ฒ€์ฆ ์‹คํ–‰ย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค
  6. ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค
  7. ๋ชจ๋“  ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค

์‹œ๋‚˜๋ฆฌ์˜ค 2: ์ƒ˜ํ”Œ์„ ํ™œ์šฉํ•œ ๊ฒ€์ฆ ํ…Œ์ŠคํŠธ

  1. ๊ฒ€์ฆํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค
  2. ์ƒ˜ํ”Œ ๋กœ๋“œย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ Swagger๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค
  3. ์ƒ˜ํ”Œ Swagger๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์‹ค์ œ Swagger ์ •์˜๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค
  4. SWAGGER ๊ฒ€์ฆ ์‹คํ–‰ย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค
  5. ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ์ˆ˜์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค

์‹œ๋‚˜๋ฆฌ์˜ค 3: ๊ฒ€์ฆ ๊ทœ์น™ ์ค€์ˆ˜ ํ™•์ธ

  1. ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ ์šฉ๋œ ๊ฒ€์ฆ ๊ทœ์น™์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  2. Swagger JSON์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค
  3. ๊ฒ€์ฆ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค
  4. ์ƒ์„ธ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ๊ทœ์น™๋ณ„ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  5. ERRORย ๋˜๋Š”ย WARNING์ด ์žˆ๋Š” ๊ทœ์น™์„ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค
  6. ์ƒ์„ธ๋ณด๊ธฐย ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์˜ค๋ฅ˜์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค

ํ™œ์šฉ ์˜ˆ์‹œโ€‹

์˜ˆ์‹œ 1: ๊ธฐ๋ณธ ๊ฒ€์ฆ ์‹คํ–‰

  1. ํ”„๋กœ์ ํŠธย otel-prjย ์„ ํƒ
  2. ์ƒ˜ํ”Œ ๋กœ๋“œย ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ Swagger ๋กœ๋“œ
  3. SWAGGER ๊ฒ€์ฆ ์‹คํ–‰ย ๋ฒ„ํŠผ ํด๋ฆญ
  4. ๊ฒ€์ฆ ๊ฒฐ๊ณผ ํ™•์ธ:
    • ์˜ค๋ฅ˜: 1๊ฐœ
    • ๊ฒฝ๊ณ : 0๊ฐœ
    • ํ†ต๊ณผ: 8๊ฐœ

์˜ˆ์‹œ 2: ์‹ค์ œ Swagger ๊ฒ€์ฆ

  1. ๊ฐœ๋ฐœ ์™„๋ฃŒ๋œ API์˜ Swagger JSON ๋ณต์‚ฌ
  2. ํ”„๋กœ์ ํŠธ ์„ ํƒ (์˜ˆ:ย otel-prj)
  3. Swagger JSON์„ ์ž…๋ ฅ ํ•„๋“œ์— ๋ถ™์—ฌ๋„ฃ๊ธฐ
  4. JSON ์œ ํšจ์„ฑ ํ™•์ธ (Valid JSON,ย OpenAPI Specย ์ฒดํฌ)
  5. SWAGGER ๊ฒ€์ฆ ์‹คํ–‰ย ๋ฒ„ํŠผ ํด๋ฆญ
  6. ๊ฒ€์ฆ ๊ฒฐ๊ณผ์—์„œ ์˜ค๋ฅ˜ ํ™•์ธ:
    • ์˜ˆ:ย mcp-json-request-bodyย ๊ทœ์น™ ์œ„๋ฐ˜
    • ๋ฉ”์‹œ์ง€:ย "content" property must have required property "application/json"
    • ๊ฒฝ๋กœ:ย paths./pet/{petId}/uploadImage.post.requestBody.content
  7. Swagger ์ •์˜์—์„œ ํ•ด๋‹น ๊ฒฝ๋กœ์˜ ์˜ค๋ฅ˜ ์ˆ˜์ •
  8. ์ˆ˜์ • ํ›„ ์žฌ๊ฒ€์ฆ ์‹คํ–‰
  9. ๋ชจ๋“  ๊ฒ€์ฆ ํ†ต๊ณผ ํ™•์ธ

์˜ˆ์‹œ 3: ๊ฒ€์ฆ ๊ฒฐ๊ณผ ๋ถ„์„

  1. ๊ฒ€์ฆ ์‹คํ–‰ ํ›„ย ๊ฒ€์ฆ ๊ฒฐ๊ณผย ์„น์…˜ ํ™•์ธ
  2. ์š”์•ฝ ์ •๋ณด์—์„œ ์ „์ฒด ์ด์Šˆ ๊ฐœ์ˆ˜ ํ™•์ธ (์˜ˆ:ย FAIL ์ด 1๊ฐœ ์ด์Šˆ)
  3. ์ƒ์„ธ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ํ•ญ๋ชฉ ํ™•์ธ:
    • ์‹ฌ๊ฐ๋„:ย ERROR์ธ ํ•ญ๋ชฉ ์šฐ์„  ํ™•์ธ
    • ๊ทœ์น™: ์–ด๋–ค ๊ทœ์น™์—์„œ ์‹คํŒจํ–ˆ๋Š”์ง€ ํ™•์ธ
    • ๋ฉ”์‹œ์ง€: ๊ตฌ์ฒด์ ์ธ ์˜ค๋ฅ˜ ๋‚ด์šฉ ํ™•์ธ
    • ๊ฒฝ๋กœ: Swagger ์ •์˜์—์„œ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์œ„์น˜ ํ™•์ธ
  4. ์ƒ์„ธ๋ณด๊ธฐย ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ์ถ”๊ฐ€ ์ •๋ณด ํ™•์ธ
  5. ์˜ค๋ฅ˜ ์ˆ˜์ • ํ›„ ์žฌ๊ฒ€์ฆ

์ฃผ์˜์‚ฌํ•ญโ€‹

  • โš ๏ธย ํ”„๋กœ์ ํŠธ ์„ ํƒ ํ•„์ˆ˜: ๊ฒ€์ฆ ๊ทœ์น™์€ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์˜ฌ๋ฐ”๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • โš ๏ธย JSON ํ˜•์‹ ์ค€์ˆ˜: ์ž…๋ ฅํ•œ Swagger๋Š” ์œ ํšจํ•œ JSON ํ˜•์‹์ด์–ด์•ผ ํ•˜๋ฉฐ, OpenAPI ์ŠคํŽ™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • โš ๏ธย ๊ฒ€์ฆ ๊ทœ์น™ ํ™•์ธ: ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ ๊ฒ€์ฆ ๊ทœ์น™์„ ๋ฏธ๋ฆฌ ํ™•์ธํ•˜์—ฌ ํ•„์š”ํ•œ ํ•ญ๋ชฉ์„ ์ค€์ˆ˜ํ•˜๋„๋ก Swagger๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”
  • โš ๏ธย ์˜ค๋ฅ˜ ์ˆ˜์ • ํ›„ ์žฌ๊ฒ€์ฆ: ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•œ ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ ์žฌ๊ฒ€์ฆ์„ ์‹คํ–‰ํ•˜์—ฌ ๋ชจ๋“  ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
  • โš ๏ธย ๊ฒ€์ฆ ๊ฒฐ๊ณผ ์ €์žฅ: ์ค‘์š”ํ•œ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋Š”ย ๊ฒฐ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐย ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ €์žฅํ•˜์„ธ์š”

ํ™œ์šฉ ํŒโ€‹

  • ๐Ÿ’กย ์ƒ˜ํ”Œ ํ™œ์šฉ: ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐย ์ƒ˜ํ”Œ ๋กœ๋“œย ๋ฒ„ํŠผ์„ ํ™œ์šฉํ•˜์—ฌ ์ž…๋ ฅ ํ˜•์‹์„ ํ™•์ธํ•˜์„ธ์š”
  • ๐Ÿ’กย ์‹ค์‹œ๊ฐ„ ๊ฒ€์ฆ: JSON์„ ์ž…๋ ฅํ•˜๋Š” ๋™์•ˆย Valid JSON๊ณผย OpenAPI Specย ํ‘œ์‹œ๋ฅผ ํ™•์ธํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ˜•์‹์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๐Ÿ’กย ๊ทœ์น™๋ณ„ ํ™•์ธ: ๊ฒ€์ฆ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ ๊ทœ์น™๋ณ„๋กœ ํ•„ํ„ฐ๋งํ•˜์—ฌ ํŠน์ • ๊ทœ์น™์˜ ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๐Ÿ’กย ๊ฒฝ๋กœ ํ™œ์šฉ: ๊ฒ€์ฆ ๊ฒฐ๊ณผ์˜ย ๊ฒฝ๋กœย ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ Swagger ์ •์˜์—์„œ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๐Ÿ’กย ๋ฐ˜๋ณต ๊ฒ€์ฆ: ๊ฐœ๋ฐœ ์ค‘๊ฐ„์ค‘๊ฐ„ ๊ฒ€์ฆ์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค