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 μ μμμ μ νν μμΉλ₯Ό μ°Ύμ μμ ν μ μμ΅λλ€
- π‘Β λ°λ³΅ κ²μ¦: κ°λ° μ€κ°μ€κ° κ²μ¦μ μ€ννμ¬ μ€λ₯λ₯Ό μ‘°κΈ°μ λ°κ²¬νκ³ μμ νλ κ²μ΄ ν¨μ¨μ μ λλ€