contact íë| 매ê°ë³ì | íì | ì¤ëª |
|---|---|---|
name | str | ì°ë½ì² ì¸ë¬¼/ì¡°ì§ì ìë³ëª ì ëë¤. |
url | str | ì°ë½ì² ì ë³´ê° ë´ê¸´ URLì ëë¤. URL íìì´ì´ì¼ í©ëë¤. |
email | str | ì°ë½ì² ì¸ë¬¼/ì¡°ì§ì ì´ë©ì¼ 주ìì ëë¤. ì´ë©ì¼ 주ì íìì´ì´ì¼ í©ëë¤. |
license_info íë| 매ê°ë³ì | íì | ì¤ëª |
|---|---|---|
name | str | íì (license_infoê° ì¤ì ë ê²½ì°). APIì ì¬ì©ë ë¼ì´ì ì¤ ì´ë¦ì
ëë¤. |
identifier | str | APIì ëí SPDX ë¼ì´ì ì¤ ííì
ëë¤. identifier íëë url íëì ìí¸ ë°°íì ì
ëë¤. OpenAPI 3.1.0, FastAPI 0.99.0ë¶í° ì¬ì© ê°ë¥ |
url | str | APIì ì¬ì©ë ë¼ì´ì ì¤ì URLì ëë¤. URL íìì´ì´ì¼ í©ëë¤. |
+
+## ë¼ì´ì ì¤ ìë³ì
+
+OpenAPI 3.1.0 ë° FastAPI 0.99.0ë¶í° `license_info`ì `identifier`를 URL ëì ì¤ì í ì ììµëë¤.
+
+ì:
+
+```Python hl_lines="31"
+{!../../docs_src/metadata/tutorial001_1.py!}
+```
+
+## íê·¸ì ëí ë©íë°ì´í°
+
+`openapi_tags` 매ê°ë³ì를 ì¬ì©íì¬ ê²½ë¡ ìëì 그룹ííë ë° ì¬ì©ëë íê·¸ì ì¶ê° ë©íë°ì´í°ë¥¼ ì¶ê°í ì ììµëë¤.
+
+리ì¤í¸ë ê° íê·¸ì ëí´ íëì ëì
ë리를 í¬í¨í´ì¼ í©ëë¤.
+
+ê° ëì
ë리ìë ë¤ìì´ í¬í¨ë ì ììµëë¤:
+
+* `name` (**íì**): `tags` 매ê°ë³ììì *ê²½ë¡ ìë*ê³¼ `APIRouter`ì ì¬ì©ë íê·¸ ì´ë¦ê³¼ ëì¼í `str`ì
ëë¤.
+* `description`: íê·¸ì ëí ê°ë¨í ì¤ëª
ì ë´ì `str`ì
ëë¤. ë§í¬ë¤ì´ì ì¬ì©í ì ìì¼ë©° 문ì UIì íìë©ëë¤.
+* `externalDocs`: ì¸ë¶ 문ì를 ì¤ëª
íë `dict`ì´ë©°:
+ * `description`: ì¸ë¶ 문ìì ëí ê°ë¨í ì¤ëª
ì ë´ì `str`ì
ëë¤.
+ * `url` (**íì**): ì¸ë¶ 문ìì URLì ë´ì `str`ì
ëë¤.
+
+### íê·¸ì ëí ë©íë°ì´í° ìì±
+
+`users` ë° `items`ì ëí íê·¸ ììì í¨ê» ë©íë°ì´í°ë¥¼ ìì±íê³ ì´ë¥¼ `openapi_tags` 매ê°ë³ìë¡ ì ë¬í´ ë³´ê² ìµëë¤:
+
+```Python hl_lines="3-16 18"
+{!../../docs_src/metadata/tutorial004.py!}
+```
+
+ì¤ëª
ìì ë§í¬ë¤ì´ì ì¬ì©í ì ììµëë¤. ì를 ë¤ì´ "login"ì êµµê²(**login**) íìëê³ , "fancy"ë 기ì¸ìê¼´(_fancy_)ë¡ íìë©ëë¤.
+
+/// tip
+
+ì¬ì© ì¤ì¸ 모ë íê·¸ì ë©íë°ì´í°ë¥¼ ì¶ê°í íìë ììµëë¤.
+
+///
+
+### íê·¸ ì¬ì©
+
+`tags` 매ê°ë³ì를 *ê²½ë¡ ìë* ë° `APIRouter`ì í¨ê» ì¬ì©íì¬ íê·¸ì í ë¹í ì ììµëë¤:
+
+```Python hl_lines="21 26"
+{!../../docs_src/metadata/tutorial004.py!}
+```
+
+/// info
+
+íê·¸ì ëí ìì¸í ë´ì©ì [ê²½ë¡ ìë 구ì±](path-operation-configuration.md#tags){.internal-link target=_blank}ìì ì½ì´ë³´ì¸ì.
+
+///
+
+### 문ì íì¸
+
+ì´ì 문ì를 íì¸íë©´ 모ë ì¶ê° ë©íë°ì´í°ê° íìë©ëë¤:
+
+
+
+### íê·¸ ìì
+
+ê° íê·¸ ë©íë°ì´í° ëì
ë리ì ììë 문ì UIì íìëë ìì를 ì ìí©ëë¤.
+
+ì를 ë¤ì´, ìíë²³ ììì `users`ë `items` ë¤ì ì¤ì§ë§, ì°ë¦¬ë `users` ë©íë°ì´í°ë¥¼ 리ì¤í¸ì 첫 ë²ì§¸ ëì
ëë¦¬ë¡ ì¶ê°í기 ë문ì 먼ì íìë©ëë¤.
+
+## OpenAPI URL
+
+OpenAPI 구조ë 기본ì ì¼ë¡ `/openapi.json`ìì ì ê³µë©ëë¤.
+
+`openapi_url` 매ê°ë³ì를 íµí´ ì´ë¥¼ ì¤ì í ì ììµëë¤.
+
+ì를 ë¤ì´, ì´ë¥¼ `/api/v1/openapi.json`ì ì ê³µíëë¡ ì¤ì íë ¤ë©´:
+
+```Python hl_lines="3"
+{!../../docs_src/metadata/tutorial002.py!}
+```
+
+OpenAPI 구조를 ìì í ë¹íì±ííë ¤ë©´ `openapi_url=None`ì¼ë¡ ì¤ì í ì ìì¼ë©°, ì´ë¥¼ ì¬ì©íì¬ ë¬¸ìí ì¬ì©ì ì¸í°íì´ì¤ë ë¹íì±íë©ëë¤.
+
+## 문ìí URL
+
+í¬í¨ë ë ê°ì§ 문ìí ì¬ì©ì ì¸í°íì´ì¤ë¥¼ ì¤ì í ì ììµëë¤:
+
+* **Swagger UI**: `/docs`ìì ì ê³µë©ëë¤.
+ * `docs_url` 매ê°ë³ìë¡ URLì ì¤ì í ì ììµëë¤.
+ * `docs_url=None`ì¼ë¡ ì¤ì íì¬ ë¹íì±íí ì ììµëë¤.
+* **ReDoc**: `/redoc`ìì ì ê³µë©ëë¤.
+ * `redoc_url` 매ê°ë³ìë¡ URLì ì¤ì í ì ììµëë¤.
+ * `redoc_url=None`ì¼ë¡ ì¤ì íì¬ ë¹íì±íí ì ììµëë¤.
+
+ì를 ë¤ì´, Swagger UI를 `/documentation`ìì ì ê³µíê³ ReDocì ë¹íì±ííë ¤ë©´:
+
+```Python hl_lines="3"
+{!../../docs_src/metadata/tutorial003.py!}
+```