]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
๐ŸŒ Update translations for ko (update-outdated) (#14835)
authorSebastiรกn Ramรญrez <tiangolo@gmail.com>
Thu, 5 Feb 2026 16:04:47 +0000 (08:04 -0800)
committerGitHub <noreply@github.com>
Thu, 5 Feb 2026 16:04:47 +0000 (16:04 +0000)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
docs/ko/docs/advanced/advanced-dependencies.md
docs/ko/docs/advanced/wsgi.md
docs/ko/docs/deployment/docker.md
docs/ko/docs/index.md
docs/ko/docs/tutorial/body-multiple-params.md
docs/ko/docs/tutorial/path-operation-configuration.md

index 04e557d15b256a60d4853311225b8798a7efa543..fe16062586911adacc048cff8d378f3a0bb182db 100644 (file)
@@ -79,13 +79,13 @@ checker(q="somequery")
 
 ### `yield`์™€ `scope`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ { #dependencies-with-yield-and-scope }
 
-0.121.0 ๋ฒ„์ „์—์„œ FastAPI๋Š” `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์— ๋Œ€ํ•ด `Depends(scope="function")` ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
+0.121.0 ๋ฒ„์ „์—์„œ FastAPI๋Š” `Depends(scope="function")` ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
 
 `Depends(scope="function")`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, `yield` ์ดํ›„์˜ ์ข…๋ฃŒ ์ฝ”๋“œ๋Š” *๊ฒฝ๋กœ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜*๊ฐ€ ๋๋‚œ ์งํ›„(ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋˜๊ธฐ ์ „)์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
 
 ๊ทธ๋ฆฌ๊ณ  `Depends(scope="request")`(๊ธฐ๋ณธ๊ฐ’)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, `yield` ์ดํ›„์˜ ์ข…๋ฃŒ ์ฝ”๋“œ๋Š” ์‘๋‹ต์ด ์ „์†ก๋œ ํ›„์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
 
-์ž์„ธํ•œ ๋‚ด์šฉ์€ [Dependencies with `yield` - Early exit and `scope`](../tutorial/dependencies/dependencies-with-yield.md#early-exit-and-scope) ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+์ž์„ธํ•œ ๋‚ด์šฉ์€ [`yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ - ์กฐ๊ธฐ ์ข…๋ฃŒ์™€ `scope`](../tutorial/dependencies/dependencies-with-yield.md#early-exit-and-scope) ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
 
 ### `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ๊ณผ `StreamingResponse`, ๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ { #dependencies-with-yield-and-streamingresponse-technical-details }
 
@@ -133,7 +133,7 @@ SQLModel(๋˜๋Š” SQLAlchemy)์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด๋Ÿฐ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ 
 
 ๊ทธ๋Ÿฌ๋ฉด ์„ธ์…˜์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜์—ฌ, ๋‹ค๋ฅธ ์š”์ฒญ๋“ค์ด ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
 
-`yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์—์„œ ์กฐ๊ธฐ ์ข…๋ฃŒ๊ฐ€ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์กฐ๊ธฐ ์ข…๋ฃŒ๊ฐ€ ์–ด๋–ค ์ ์—์„œ ์ด๋“์ด ๋˜๋Š”์ง€๋ฅผ ํฌํ•จํ•ด <a href="https://github.com/fastapi/fastapi/discussions/new?category=questions" class="external-link" target="_blank">GitHub Discussion Question</a>์„ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”.
+`yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์—์„œ ์กฐ๊ธฐ ์ข…๋ฃŒ๊ฐ€ ํ•„์š”ํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์กฐ๊ธฐ ์ข…๋ฃŒ๊ฐ€ ์–ด๋–ค ์ ์—์„œ ์ด๋“์ด ๋˜๋Š”์ง€๋ฅผ ํฌํ•จํ•ด <a href="https://github.com/fastapi/fastapi/discussions/new?category=questions" class="external-link" target="_blank">GitHub Discussions ์งˆ๋ฌธ</a>์„ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”.
 
 `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์—์„œ ์กฐ๊ธฐ ์ข…๋ฃŒ์— ๋Œ€ํ•œ ์„ค๋“๋ ฅ ์žˆ๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๋ฉด, ์กฐ๊ธฐ ์ข…๋ฃŒ๋ฅผ ์„ ํƒ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 
@@ -145,7 +145,7 @@ FastAPI 0.110.0 ์ด์ „์—๋Š” `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์„ ์‚ฌ์šฉํ•œ ๋‹ค์Œ ๊ทธ
 
 ### ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํƒœ์Šคํฌ์™€ `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ, ๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ { #background-tasks-and-dependencies-with-yield-technical-details }
 
-FastAPI 0.106.0 ์ด์ „์—๋Š” `yield` ์ดํ›„์— ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์˜ ์ข…๋ฃŒ ์ฝ”๋“œ๋Š” ์‘๋‹ต์ด ์ „์†ก๋œ *ํ›„์—* ์‹คํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, [Exception Handlers](../tutorial/handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}๊ฐ€ ์ด๋ฏธ ์‹คํ–‰๋œ ๋’ค์˜€์Šต๋‹ˆ๋‹ค.
+FastAPI 0.106.0 ์ด์ „์—๋Š” `yield` ์ดํ›„์— ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. `yield`๊ฐ€ ์žˆ๋Š” ์˜์กด์„ฑ์˜ ์ข…๋ฃŒ ์ฝ”๋“œ๋Š” ์‘๋‹ต์ด ์ „์†ก๋œ *ํ›„์—* ์‹คํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, [์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ](../tutorial/handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}๊ฐ€ ์ด๋ฏธ ์‹คํ–‰๋œ ๋’ค์˜€์Šต๋‹ˆ๋‹ค.
 
 ์ด๋Š” ์ฃผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํƒœ์Šคํฌ ์•ˆ์—์„œ ์˜์กด์„ฑ์ด "yield"ํ•œ ๋™์ผํ•œ ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์˜€์Šต๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํƒœ์Šคํฌ๊ฐ€ ๋๋‚œ ๋’ค์— ์ข…๋ฃŒ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
 
index 89cf57cfef3aae473e3d11dd8932148a090412f9..5e0e87c5e7a7c30b04f7e87a3d93d98a398288a6 100644 (file)
@@ -1,32 +1,48 @@
-# WSGI ํฌํ•จํ•˜๊ธฐ - Flask, Django ๊ทธ ์™ธ { #including-wsgi-flask-django-others }
+# WSGI ํฌํ•จํ•˜๊ธฐ - Flask, Django ๋“ฑ { #including-wsgi-flask-django-others }
 
-[รฌ\84\9cรซยธ\8c รฌ\9d\91รฌ\9aยฉ รญ\94\84รซยก\9cรชยทยธรซ\9eยจ - รซยง\88รฌ\9aยดรญ\8aยธ](sub-applications.md){.internal-link target=_blank}, [รญ\94\84รซยก\9dรฌ\8b\9c รซ\92ยครญ\8eยธรฌ\97\90รฌ\84\9c](behind-a-proxy.md){.internal-link target=_blank}รฌ\97\90รฌ\84\9c รซยณยดรฌ\95\98รซ\93ยฏรฌ\9dยด WSGI รฌ\9d\91รฌ\9aยฉ รญ\94\84รซยก\9cรชยทยธรซ\9eยจรซ\93ยครฌ\9d\84 รซยง\88รฌ\9aยดรญ\8aยธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+[รฌ\84\9cรซยธ\8c รฌ\95ย รญ\94\8cรซยฆยฌรฌยผ\80รฌ\9dยดรฌ\85\98 - รซยง\88รฌ\9aยดรญ\8aยธ](sub-applications.md){.internal-link target=_blank}, [รญ\94\84รซยก\9dรฌ\8b\9c รซ\92ยครฌ\97\90รฌ\84\9c](behind-a-proxy.md){.internal-link target=_blank}รฌ\97\90รฌ\84\9c รซยณยธ รชยฒ\83รฌยฒ\98รซ\9fยผ WSGI รฌ\95ย รญ\94\8cรซยฆยฌรฌยผ\80รฌ\9dยดรฌ\85\98รฌ\9d\84 รซยง\88รฌ\9aยดรญ\8aยธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
-รฌ\9dยดรซยฅยผ รฌ\9c\84รญ\95ยด `WSGIMiddleware`รซยฅยผ รฌ\82ยฌรฌ\9aยฉรญ\95ยด WSGI รฌ\9d\91รฌ\9aยฉ รญ\94\84รซยก\9cรชยทยธรซ\9eยจ(์˜ˆ: Flask, Django ๋“ฑ)์„ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+รฌ\9dยดรซยฅยผ รฌ\9c\84รญ\95ยด `WSGIMiddleware`รซยฅยผ รฌ\82ยฌรฌ\9aยฉรญ\95ยด WSGI รฌ\95ย รญ\94\8cรซยฆยฌรฌยผ\80รฌ\9dยดรฌ\85\98(์˜ˆ: Flask, Django ๋“ฑ)์„ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 ## `WSGIMiddleware` ์‚ฌ์šฉํ•˜๊ธฐ { #using-wsgimiddleware }
 
-`WSGIMiddleware`๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+/// info | ์ •๋ณด
 
-๊ทธ๋Ÿฐ ๋‹ค์Œ, WSGI(์˜ˆ: Flask) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฏธ๋“ค์›จ์–ด๋กœ ํฌ์žฅํ•ฉ๋‹ˆ๋‹ค.
+์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด `a2wsgi`๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: `pip install a2wsgi`
 
-๊ทธ ํ›„, ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.
+///
 
-{* ../../docs_src/wsgi/tutorial001_py39.py hl[2:3,3] *}
+`a2wsgi`์—์„œ `WSGIMiddleware`๋ฅผ import ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋Ÿฐ ๋‹ค์Œ, WSGI(์˜ˆ: Flask) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฏธ๋“ค์›จ์–ด๋กœ ๊ฐ์Œ‰๋‹ˆ๋‹ค.
+
+๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.
+
+{* ../../docs_src/wsgi/tutorial001_py39.py hl[1,3,23] *}
+
+/// note | ์ฐธ๊ณ 
+
+์ด์ „์— `fastapi.middleware.wsgi`์˜ `WSGIMiddleware` ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ–ˆ์ง€๋งŒ ์ด์ œ๋Š” ๋” ์ด์ƒ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
+
+๋Œ€์‹  `a2wsgi` ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
+
+๋‹จ, `a2wsgi` ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  `a2wsgi`์—์„œ `WSGIMiddleware`๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ import ํ•˜๋Š”์ง€๋งŒ ํ™•์ธํ•˜์„ธ์š”.
+
+///
 
 ## ํ™•์ธํ•˜๊ธฐ { #check-it }
 
-รฌ\9dยดรฌย \9c `/v1/` รชยฒยฝรซยก\9cรฌ\97\90 รฌ\9e\88รซ\8a\94 รซยชยจรซ\93ย  รฌ\9a\94รฌยฒยญรฌ\9d\80 Flask รฌ\9d\91รฌ\9aยฉ รญ\94\84รซยก\9cรชยทยธรซ\9eยจ์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
+รฌ\9dยดรฌย \9c `/v1/` รชยฒยฝรซยก\9cรฌ\97\90 รฌ\9e\88รซ\8a\94 รซยชยจรซ\93ย  รฌ\9a\94รฌยฒยญรฌ\9d\80 Flask รฌ\95ย รญ\94\8cรซยฆยฌรฌยผ\80รฌ\9dยดรฌ\85\98์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
 
 ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€๋Š” **FastAPI**์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
 
-์‹คํ–‰ํ•˜๋ฉด <a href="http://localhost:8000/v1/" class="external-link" target="_blank">http://localhost:8000/v1/</a>์œผ๋กœ ์ด๋™ํ•ด์„œ Flask์˜ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+์‹คํ–‰ํ•˜๊ณ  <a href="http://localhost:8000/v1/" class="external-link" target="_blank">http://localhost:8000/v1/</a>๋กœ ์ด๋™ํ•˜๋ฉด Flask์˜ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
 
 ```txt
 Hello, World from Flask!
 ```
 
-๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์œผ๋กœ ์ด๋™ํ•˜๋ฉด <a href="http://localhost:8000/v2" class="external-link" target="_blank">http://localhost:8000/v2</a> **FastAPI**์˜ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+๊ทธ๋ฆฌ๊ณ  <a href="http://localhost:8000/v2" class="external-link" target="_blank">http://localhost:8000/v2</a>๋กœ ์ด๋™ํ•˜๋ฉด **FastAPI**์˜ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
 
 ```JSON
 {
index be04c923a5f66bf7abfafdb4cafc53477a73e02d..20e341c26994c34857fc18e7d059ecb206cc3855 100644 (file)
@@ -145,8 +145,6 @@ Successfully installed fastapi pydantic
 * ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ `main.py` ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค:
 
 ```Python
-from typing import Union
-
 from fastapi import FastAPI
 
 app = FastAPI()
@@ -158,7 +156,7 @@ def read_root():
 
 
 @app.get("/items/{item_id}")
-def read_item(item_id: int, q: Union[str, None] = None):
+def read_item(item_id: int, q: str | None = None):
     return {"item_id": item_id, "q": q}
 ```
 
@@ -245,14 +243,14 @@ Docker ์ง€์‹œ์–ด <a href="https://docs.docker.com/reference/dockerfile/#cmd" cla
 โœ… **Exec** form:
 
 ```Dockerfile
-# โœ… Do this
+# โœ… ์ด๋ ‡๊ฒŒ ํ•˜์„ธ์š”
 CMD ["fastapi", "run", "app/main.py", "--port", "80"]
 ```
 
 โ›”๏ธ **Shell** form:
 
 ```Dockerfile
-# โ›”๏ธ Don't do this
+# โ›”๏ธ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ๋งˆ์„ธ์š”
 CMD fastapi run app/main.py --port 80
 ```
 
@@ -456,7 +454,7 @@ Traefik์€ Docker, Kubernetes ๋“ฑ๊ณผ ํ†ตํ•ฉ๋˜์–ด ์žˆ์–ด, ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์ปจ
 
 ## ๋ณต์ œ - ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜ { #replication-number-of-processes }
 
-**Kubernetes**, Docker Swarm Mode, Nomad ๋“ฑ์˜ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ๋ถ„์‚ฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” <abbr title="A group of machines that are configured to be connected and work together in some way.">cluster</abbr>๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๊ฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ(**์›Œ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Uvicorn** ๊ฐ™์€) **ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €**๋ฅผ ์“ฐ๋Š” ๋Œ€์‹ , **ํด๋Ÿฌ์Šคํ„ฐ ๋ ˆ๋ฒจ**์—์„œ **๋ณต์ œ๋ฅผ ์ฒ˜๋ฆฌ**ํ•˜๊ณ  ์‹ถ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.
+**Kubernetes**, Docker Swarm Mode, Nomad ๋“ฑ์˜ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ์—ฌ๋Ÿฌ ๋จธ์‹ ์— ๋ถ„์‚ฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” <abbr title="์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๋จธ์‹ ์˜ ๊ทธ๋ฃน">ํด๋Ÿฌ์Šคํ„ฐ</abbr>๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๊ฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ(**์›Œ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Uvicorn** ๊ฐ™์€) **ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €**๋ฅผ ์“ฐ๋Š” ๋Œ€์‹ , **ํด๋Ÿฌ์Šคํ„ฐ ๋ ˆ๋ฒจ**์—์„œ **๋ณต์ œ๋ฅผ ์ฒ˜๋ฆฌ**ํ•˜๊ณ  ์‹ถ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.
 
 Kubernetes ๊ฐ™์€ ๋ถ„์‚ฐ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ๋ณดํ†ต ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ **๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ**์„ ์ง€์›ํ•˜๋ฉด์„œ๋„, **์ปจํ…Œ์ด๋„ˆ ๋ณต์ œ**๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ†ตํ•ฉ๋œ ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ **ํด๋Ÿฌ์Šคํ„ฐ ๋ ˆ๋ฒจ**์—์„œ์š”.
 
@@ -580,7 +578,7 @@ Kubernetes๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์ด๋Š” ์•„๋งˆ๋„ <a href="https://kubernetes.io/d
 
 ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ์›Œ์ปค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, `--workers` ์ปค๋งจ๋“œ ๋ผ์ธ ์˜ต์…˜์„ ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
 
-/// note Technical Details | ๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ
+/// note | ๊ธฐ์ˆ  ์„ธ๋ถ€์‚ฌํ•ญ
 
 ์ด Docker ์ด๋ฏธ์ง€๋Š” Uvicorn์ด ์ฃฝ์€ ์›Œ์ปค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๋˜ ์‹œ๊ธฐ์— ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Gunicorn๊ณผ Uvicorn์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๊ณ , Gunicorn์ด Uvicorn ์›Œ์ปค ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žฌ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋‹นํ•œ ๋ณต์žก์„ฑ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
 
index 0c317f296d9768b56c3644e5c7ce31c3b7e50bb4..776b8c47c44abc59182065ae9bb49042a655817c 100644 (file)
@@ -40,7 +40,7 @@ FastAPI๋Š” ํ˜„๋Œ€์ ์ด๊ณ , ๋น ๋ฅด๋ฉฐ(๊ณ ์„ฑ๋Šฅ), ํŒŒ์ด์ฌ ํ‘œ์ค€ ํƒ€์ž… ํžŒํŠธ
 * **๋น ๋ฆ„**: (Starlette๊ณผ Pydantic ๋•๋ถ„์—) **NodeJS** ๋ฐ **Go**์™€ ๋Œ€๋“ฑํ•  ์ •๋„๋กœ ๋งค์šฐ ๋†’์€ ์„ฑ๋Šฅ. [์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋น ๋ฅธ ํŒŒ์ด์ฌ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜](#performance).
 * **๋น ๋ฅธ ์ฝ”๋“œ ์ž‘์„ฑ**: ์•ฝ 200%์—์„œ 300%๊นŒ์ง€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์†๋„ ์ฆ๊ฐ€. *
 * **์ ์€ ๋ฒ„๊ทธ**: ์‚ฌ๋žŒ(๊ฐœ๋ฐœ์ž)์— ์˜ํ•œ ์—๋Ÿฌ ์•ฝ 40% ๊ฐ์†Œ. *
-* **์ง๊ด€์ **: ํ›Œ๋ฅญํ•œ ํŽธ์ง‘๊ธฐ ์ง€์›. ๋ชจ๋“  ๊ณณ์—์„œ <abbr title="also known as auto-complete, autocompletion, IntelliSense">์ž๋™์™„์„ฑ</abbr>. ์ ์€ ๋””๋ฒ„๊น… ์‹œ๊ฐ„.
+* **์ง๊ด€์ **: ํ›Œ๋ฅญํ•œ ํŽธ์ง‘๊ธฐ ์ง€์›. ๋ชจ๋“  ๊ณณ์—์„œ <abbr title="๋‹ค๋ฅธ ๋ง๋กœ๋Š”: auto-complete, autocompletion, IntelliSense">์ž๋™์™„์„ฑ</abbr>. ์ ์€ ๋””๋ฒ„๊น… ์‹œ๊ฐ„.
 * **์‰ฌ์›€**: ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐฐ์šฐ๋„๋ก ์„ค๊ณ„. ์ ์€ ๋ฌธ์„œ ์ฝ๊ธฐ ์‹œ๊ฐ„.
 * **์งง์Œ**: ์ฝ”๋“œ ์ค‘๋ณต ์ตœ์†Œํ™”. ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ ์–ธ์˜ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ. ์ ์€ ๋ฒ„๊ทธ.
 * **๊ฒฌ๊ณ ํ•จ**: ์ค€๋น„๋œ ํ”„๋กœ๋•์…˜ ์šฉ ์ฝ”๋“œ๋ฅผ ์–ป์œผ์‹ญ์‹œ์˜ค. ์ž๋™ ๋Œ€ํ™”ํ˜• ๋ฌธ์„œ์™€ ํ•จ๊ป˜.
@@ -127,7 +127,7 @@ FastAPI๋Š” ํ˜„๋Œ€์ ์ด๊ณ , ๋น ๋ฅด๋ฉฐ(๊ณ ์„ฑ๋Šฅ), ํŒŒ์ด์ฌ ํ‘œ์ค€ ํƒ€์ž… ํžŒํŠธ
 
 <a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a>
 
-์›น API ๋Œ€์‹  ํ„ฐ๋ฏธ๋„์—์„œ ์‚ฌ์šฉํ•  <abbr title="Command Line Interface">CLI</abbr> ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๋ฉด, <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a>๋ฅผ ํ™•์ธํ•ด ๋ณด์‹ญ์‹œ์˜ค.
+์›น API ๋Œ€์‹  ํ„ฐ๋ฏธ๋„์—์„œ ์‚ฌ์šฉํ•  <abbr title="Command Line Interface - ์ปค๋งจ๋“œ ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค">CLI</abbr> ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๋ฉด, <a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a>๋ฅผ ํ™•์ธํ•ด ๋ณด์‹ญ์‹œ์˜ค.
 
 **Typer**๋Š” FastAPI์˜ ๋™์ƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  **CLI๋ฅผ ์œ„ํ•œ FastAPI**๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. โŒจ๏ธ ๐Ÿš€
 
@@ -161,8 +161,6 @@ $ pip install "fastapi[standard]"
 ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ `main.py` ํŒŒ์ผ์„ ๋งŒ๋“œ์‹ญ์‹œ์˜ค:
 
 ```Python
-from typing import Union
-
 from fastapi import FastAPI
 
 app = FastAPI()
@@ -174,7 +172,7 @@ def read_root():
 
 
 @app.get("/items/{item_id}")
-def read_item(item_id: int, q: Union[str, None] = None):
+def read_item(item_id: int, q: str | None = None):
     return {"item_id": item_id, "q": q}
 ```
 
@@ -183,9 +181,7 @@ def read_item(item_id: int, q: Union[str, None] = None):
 
 ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ `async` / `await`์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, `async def`๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค:
 
-```Python hl_lines="9  14"
-from typing import Union
-
+```Python hl_lines="7  12"
 from fastapi import FastAPI
 
 app = FastAPI()
@@ -197,7 +193,7 @@ async def read_root():
 
 
 @app.get("/items/{item_id}")
-async def read_item(item_id: int, q: Union[str, None] = None):
+async def read_item(item_id: int, q: str | None = None):
     return {"item_id": item_id, "q": q}
 ```
 
@@ -288,9 +284,7 @@ INFO:     Application startup complete.
 
 Pydantic ๋•๋ถ„์— ํ‘œ์ค€ Python ํƒ€์ž…์„ ์‚ฌ์šฉํ•ด ๋ณธ๋ฌธ์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
 
-```Python hl_lines="4  9-12  25-27"
-from typing import Union
-
+```Python hl_lines="2  7-10 23-25"
 from fastapi import FastAPI
 from pydantic import BaseModel
 
@@ -300,7 +294,7 @@ app = FastAPI()
 class Item(BaseModel):
     name: str
     price: float
-    is_offer: Union[bool, None] = None
+    is_offer: bool | None = None
 
 
 @app.get("/")
@@ -309,7 +303,7 @@ def read_root():
 
 
 @app.get("/items/{item_id}")
-def read_item(item_id: int, q: Union[str, None] = None):
+def read_item(item_id: int, q: str | None = None):
     return {"item_id": item_id, "q": q}
 
 
@@ -374,7 +368,7 @@ item: Item
 * ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ:
     * ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์„ ๋•Œ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ช…ํ™•ํ•œ ์—๋Ÿฌ.
     * ๊นŠ์ด ์ค‘์ฒฉ๋œ JSON ๊ฐ์ฒด์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ.
-* ์ž…๋ ฅ ๋ฐ์ดํ„ฐ <abbr title="also known as: serialization, parsing, marshalling">๋ณ€ํ™˜</abbr>: ๋„คํŠธ์›Œํฌ์—์„œ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ฐ ํƒ€์ž…์œผ๋กœ ์ „์†ก. ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค:
+* ์ž…๋ ฅ ๋ฐ์ดํ„ฐ <abbr title="๋‹ค๋ฅธ ๋ง๋กœ๋Š”: serialization, parsing, marshalling">๋ณ€ํ™˜</abbr>: ๋„คํŠธ์›Œํฌ์—์„œ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ฐ ํƒ€์ž…์œผ๋กœ ์ „์†ก. ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค:
     * JSON.
     * ๊ฒฝ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜.
     * ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜.
@@ -382,7 +376,7 @@ item: Item
     * ํ—ค๋”.
     * ํผ(Forms).
     * ํŒŒ์ผ.
-* ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ <abbr title="also known as: serialization, parsing, marshalling">๋ณ€ํ™˜</abbr>: ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ฐ ํƒ€์ž…์„ ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ๋กœ ์ „ํ™˜(JSON ํ˜•์‹์œผ๋กœ):
+* ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ <abbr title="๋‹ค๋ฅธ ๋ง๋กœ๋Š”: serialization, parsing, marshalling">๋ณ€ํ™˜</abbr>: ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ๋ฐ ํƒ€์ž…์„ ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ๋กœ ์ „ํ™˜(JSON ํ˜•์‹์œผ๋กœ):
     * ํŒŒ์ด์ฌ ํƒ€์ž… ๋ณ€ํ™˜ (`str`, `int`, `float`, `bool`, `list`, ๋“ฑ).
     * `datetime` ๊ฐ์ฒด.
     * `UUID` ๊ฐ์ฒด.
@@ -445,7 +439,7 @@ item: Item
 
 * ์„œ๋กœ ๋‹ค๋ฅธ ์žฅ์†Œ์—์„œ **๋งค๊ฐœ๋ณ€์ˆ˜** ์„ ์–ธ: **ํ—ค๋”**, **์ฟ ํ‚ค**, **ํผ ํ•„๋“œ** ๊ทธ๋ฆฌ๊ณ  **ํŒŒ์ผ**.
 * `maximum_length` ๋˜๋Š” `regex`์ฒ˜๋Ÿผ **์œ ํšจ์„ฑ ์ œ์•ฝ**ํ•˜๋Š” ๋ฐฉ๋ฒ•.
-* ๊ฐ•๋ ฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด **<abbr title="also known as components, resources, providers, services, injectables">์˜์กด์„ฑ ์ฃผ์ž…</abbr>** ์‹œ์Šคํ…œ.
+* ๊ฐ•๋ ฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด **<abbr title="๋‹ค๋ฅธ ๋ง๋กœ๋Š”: components, resources, providers, services, injectables">์˜์กด์„ฑ ์ฃผ์ž…</abbr>** ์‹œ์Šคํ…œ.
 * **OAuth2** ์ง€์›์„ ํฌํ•จํ•œ **JWT tokens** ๋ฐ **HTTP Basic**์„ ๊ฐ–๋Š” ๋ณด์•ˆ๊ณผ ์ธ์ฆ.
 * (Pydantic ๋•๋ถ„์—) **๊นŠ์€ ์ค‘์ฒฉ JSON ๋ชจ๋ธ**์„ ์„ ์–ธํ•˜๋Š”๋ฐ ๋” ์ง„๋ณดํ•œ (ํ•˜์ง€๋งŒ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‰ฌ์šด) ๊ธฐ์ˆ .
 * <a href="https://strawberry.rocks" class="external-link" target="_blank">Strawberry</a> ๋ฐ ๊ธฐํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ **GraphQL** ํ†ตํ•ฉ.
index 701351e6374532bf8ff3607e1040be7d7940cdb5..bebdffed800776198e04a3e55e8fb8dba95cc86a 100644 (file)
 ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์ผ ๊ฐ’์€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•ด์„๋˜๋ฏ€๋กœ, ๋ช…์‹œ์ ์œผ๋กœ `Query`๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š” ์—†์ด ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:
 
 ```Python
-q: Union[str, None] = None
+q: str | None = None
 ```
 
-๋˜๋Š” Python 3.10 ์ด์ƒ์—์„œ๋Š”:
+๋˜๋Š” Python 3.9์—์„œ๋Š”:
 
 ```Python
-q: str | None = None
+q: Union[str, None] = None
 ```
 
+
 ์˜ˆ๋ฅผ ๋“ค์–ด:
 
 {* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
index b8a87667a0325cc306d1ac36c281693d34c23241..baef3fb40315d38f4cb4789fe7e88196e55d7ea8 100644 (file)
 
 `summary`์™€ `description`์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
 
-{* ../../docs_src/path_operation_configuration/tutorial003_py310.py hl[18:19] *}
+{* ../../docs_src/path_operation_configuration/tutorial003_py310.py hl[17:18] *}
 
 ## ๋…์ŠคํŠธ๋ง์œผ๋กœ ๋งŒ๋“  ์„ค๋ช… { #description-from-docstring }
 
-์„ค๋ช…์€ ๋ณดํ†ต ๊ธธ์–ด์ง€๊ณ  ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, *๊ฒฝ๋กœ ์ฒ˜๋ฆฌ* ์„ค๋ช…์„ ํ•จ์ˆ˜ <abbr title="a multi-line string as the first expression inside a function (not assigned to any variable) used for documentation โ€“ ๋ฌธ์„œํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์ฒซ ํ‘œํ˜„์‹์˜ ์—ฌ๋Ÿฌ ์ค„ ๋ฌธ์ž์—ด(์–ด๋–ค ๋ณ€์ˆ˜์—๋„ ํ• ๋‹น๋˜์ง€ ์•Š์Œ)">docstring</abbr>์— ์„ ์–ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, **FastAPI**๋Š” ๊ทธ๊ณณ์—์„œ ์ด๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.
+์„ค๋ช…์€ ๋ณดํ†ต ๊ธธ์–ด์ง€๊ณ  ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, *๊ฒฝ๋กœ ์ฒ˜๋ฆฌ* ์„ค๋ช…์„ ํ•จ์ˆ˜ <abbr title="๋ฌธ์„œํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์ฒซ ํ‘œํ˜„์‹์˜ ์—ฌ๋Ÿฌ ์ค„ ๋ฌธ์ž์—ด(์–ด๋–ค ๋ณ€์ˆ˜์—๋„ ํ• ๋‹น๋˜์ง€ ์•Š์Œ)">docstring</abbr>์— ์„ ์–ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, **FastAPI**๋Š” ๊ทธ๊ณณ์—์„œ ์ด๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.
 
 ๋…์ŠคํŠธ๋ง์—๋Š” <a href="https://en.wikipedia.org/wiki/Markdown" class="external-link" target="_blank">Markdown</a>์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, (๋…์ŠคํŠธ๋ง์˜ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ) ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•ด์„๋˜๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
 
@@ -70,7 +70,7 @@
 
 `response_description` ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‘๋‹ต์— ๊ด€ํ•œ ์„ค๋ช…์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
 
-{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[19] *}
+{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
 
 /// info | ์ •๋ณด
 
@@ -90,7 +90,7 @@ OpenAPI๋Š” ๊ฐ *๊ฒฝ๋กœ ์ฒ˜๋ฆฌ*๊ฐ€ ์‘๋‹ต์— ๊ด€ํ•œ ์„ค๋ช…์„ ์š”๊ตฌํ•  ๊ฒƒ์„ 
 
 ## *๊ฒฝ๋กœ ์ฒ˜๋ฆฌ* ์ง€์›์ค‘๋‹จํ•˜๊ธฐ { #deprecate-a-path-operation }
 
-*๊ฒฝ๋กœ ์ฒ˜๋ฆฌ*๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  <abbr title="obsolete, recommended not to use it โ€“ ๊ตฌ์‹์ด๋ฉฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋จ">deprecated</abbr>๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค๋ฉด, `deprecated` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:
+*๊ฒฝ๋กœ ์ฒ˜๋ฆฌ*๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  <abbr title="๊ตฌ์‹์ด๋ฉฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋จ">deprecated</abbr>๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค๋ฉด, `deprecated` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:
 
 {* ../../docs_src/path_operation_configuration/tutorial006_py39.py hl[16] *}