--- /dev/null
+# 쑰건λΆμ μΈ OpenAPI
+
+νμν κ²½μ°, μ€μ λ° νκ²½ λ³μλ₯Ό μ¬μ©νμ¬ νκ²½μ λ°λΌ 쑰건λΆλ‘ OpenAPIλ₯Ό ꡬμ±νκ³ μμ ν λΉνμ±νν μλ μμ΅λλ€.
+
+## 보μ, API λ° docsμ λν΄μ
+
+νλ‘λμ
μμ, λ¬Έμνλ μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό μ¨κΈ°λ κ²μ΄ APIλ₯Ό 보νΈνλ λ°©λ²μ΄ *λμ΄μλ μ λ©λλ€*.
+
+μ΄λ APIμ μΆκ°μ μΈ λ³΄μμ μ 곡νμ§ μμΌλ©°, *κ²½λ‘ μμ
*μ μ¬μ ν λμΌν μμΉμμ μ¬μ© ν μ μμ΅λλ€.
+
+μ½λμ 보μ κ²°ν¨μ΄ μλ€λ©΄, κ·Έ κ²°ν¨μ μ¬μ ν μ‘΄μ¬ν κ²μ
λλ€.
+
+λ¬Έμλ₯Ό μ¨κΈ°λ κ²μ APIμ μνΈμμ©νλ λ°©λ²μ μ΄ν΄νκΈ° μ΄λ ΅κ² λ§λ€λ©°, νλ‘λμ
μμ λλ²κΉ
μ λ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€. μ΄λ λ¨μν <a href="https://en.wikipedia.org/wiki/Security_through_obscurity" class="external-link" target="_blank">'λͺ¨νΈμ±μ μν 보μ'</a>μ ν ννλ‘ κ°μ£Όλ μ μμ΅λλ€.
+
+APIλ₯Ό 보νΈνκ³ μΆλ€λ©΄, μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ λ λμ λ°©λ²λ€μ΄ μμ΅λλ€:
+
+* μμ² λ³Έλ¬Έκ³Ό μλ΅μ λν΄ μ μ μλ Pydantic λͺ¨λΈμ μ¬μ©νλλ‘ νμΈμ.
+
+* μ’
μμ±μ μ¬μ©νμ¬ νμν κΆνκ³Ό μν μ ꡬμ±νμΈμ.
+
+* νλ¬Έ λΉλ°λ²νΈλ₯Ό μ λ μ μ₯νμ§ λ§κ³ , μ€μ§ μνΈνλ λΉλ°λ²νΈλ§ μ μ₯νμΈμ.
+
+* Passlibκ³Ό JWT ν ν°κ³Ό κ°μ μ μλ €μ§ μνΈν λꡬλ€μ ꡬννκ³ μ¬μ©νμΈμ.
+
+* νμν κ³³μ OAuth2 λ²μλ₯Ό μ¬μ©νμ¬ λ μΈλΆνλ κΆν μ μ΄λ₯Ό μΆκ°νμΈμ.
+
+* λ±λ±....
+
+κ·ΈλΌμλ λΆκ΅¬νκ³ , νΉμ νκ²½(μ: νλ‘λμ
)μμ λλ νκ²½ λ³μμ μ€μ μ λ°λΌ API λ¬Έμλ₯Ό λΉνμ±νν΄μΌ νλ λ§€μ° νΉμ ν μ¬μ© μ¬λ‘κ° μμ μ μμ΅λλ€.
+
+## μ€μ λ° νκ²½λ³μμ μ‘°κ±΄λΆ OpenAPI
+
+λμΌν Pydantic μ€μ μ μ¬μ©νμ¬ μμ±λ OpenAPI λ° λ¬Έμ UIλ₯Ό μ½κ² ꡬμ±ν μ μμ΅λλ€.
+
+μλ₯Ό λ€μ΄:
+
+{* ../../docs_src/conditional_openapi/tutorial001.py hl[6,11] *}
+
+μ¬κΈ°μ `openapi_url` μ€μ μ κΈ°λ³Έκ°μΈ `"/openapi.json"`μΌλ‘ μ μΈν©λλ€.
+
+κ·Έλ° λ€, μ°λ¦¬λ `FastAPI` μ±μ λ§λ€ λ κ·Έκ²μ μ¬μ©ν©λλ€.
+
+νκ²½ λ³μ `OPENAPI_URL`μ λΉ λ¬Έμμ΄λ‘ μ€μ νμ¬ OpenAPI(λ¬Έμ UI ν¬ν¨)λ₯Ό λΉνμ±νν μλ μμ΅λλ€. μλ₯Ό λ€μ΄:
+
+<div class="termy">
+
+```console
+$ OPENAPI_URL= uvicorn main:app
+
+<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+```
+
+</div>
+
+κ·Έλ¦¬κ³ `/openapi.json`, `/docs` λλ `/redoc`μ URLλ‘ μ΄λνλ©΄ `404 Not Found`λΌλ μ€λ₯κ° λ€μκ³Ό κ°μ΄ νμλ©λλ€:
+
+```JSON
+{
+ "detail": "Not Found"
+}
+```