]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Korean translation for `docs/ko/docs/tutorial/middleware.md` (#2829)
authorJeongHyeongKim <maladroit1@likelion.org>
Wed, 31 Jan 2024 14:35:27 +0000 (23:35 +0900)
committerGitHub <noreply@github.com>
Wed, 31 Jan 2024 14:35:27 +0000 (09:35 -0500)
docs/ko/docs/tutorial/middleware.md [new file with mode: 0644]

diff --git a/docs/ko/docs/tutorial/middleware.md b/docs/ko/docs/tutorial/middleware.md
new file mode 100644 (file)
index 0000000..f35b446
--- /dev/null
@@ -0,0 +1,61 @@
+# λ―Έλ“€μ›¨μ–΄
+
+미듀웨어λ₯Ό **FastAPI** μ‘μš© ν”„λ‘œκ·Έλž¨μ— μΆ”κ°€ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+"미듀웨어"λŠ” νŠΉμ • *경둜 μž‘동*에 μ˜ν•΄ μ²˜λ¦¬λ˜κΈ° μ „, λͺ¨λ“  **μš”μ²­**에 λŒ€ν•΄μ„œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. λ˜ν•œ λͺ¨λ“  **응닡**이 λ°˜ν™˜λ˜κΈ° μ „에도 λ™μΌν•˜κ²Œ λ™μž‘ν•©λ‹ˆλ‹€.
+
+* λ―Έλ“€μ›¨μ–΄λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μœΌλ‘œ μ˜€λŠ” **μš”μ²­**λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.
+* **μš”μ²­** λ˜λŠ” λ‹€λ₯Έ ν•„μš”ν•œ μ½”λ“œλ₯Ό μ‹€ν–‰ μ‹œν‚¬ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+* **μš”μ²­**을 μ‘μš© ν”„λ‘œκ·Έλž¨μ˜ *경둜 μž‘동*으둜 μ „λ‹¬ν•˜μ—¬ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
+* μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ *경둜 μž‘μ—…*μ—μ„œ μƒμ„±ν•œ **응닡**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
+* **응닡** λ˜λŠ” λ‹€λ₯Έ ν•„μš”ν•œ μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” λ™μž‘을 ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+* **응닡**λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
+
+!!! note "기술 μ„ΈλΆ€μ‚¬ν•­"
+    λ§Œμ•½ `yield`λ₯Ό μ‚¬μš©ν•œ μ˜μ‘΄μ„±μ„ κ°€μ§€κ³  μžˆλ‹€λ©΄, λ―Έλ“€μ›¨μ–΄κ°€ μ‹€ν–‰λ˜κ³  λ‚œ ν›„에 exit이 μ‹€ν–‰λ©λ‹ˆλ‹€.
+
+    λ§Œμ•½ (λ‚˜μ€‘μ— λ¬Έμ„œμ—μ„œ λ‹€λ£°) λ°±κ·ΈλΌμš΄λ“œ μž‘업이 μžˆλ‹€λ©΄, λͺ¨λ“  λ―Έλ“€μ›¨μ–΄κ°€ μ‹€ν–‰λ˜κ³  *λ‚œ ν›„에* μ‹€ν–‰λ©λ‹ˆλ‹€.
+
+## λ―Έλ“€μ›¨μ–΄ λ§Œλ“€κΈ°
+
+미듀웨어λ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄μ„œ ν•¨μˆ˜ μƒλ‹¨μ— `@app.middleware("http")` λ°μ½”λ ˆμ΄ν„°λ₯Ό μ‚¬μš©ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+미듀웨어 ν•¨μˆ˜λŠ” λ‹€μŒ ν•­λͺ©λ“€μ„ λ°›μŠ΅λ‹ˆλ‹€:
+
+* `request`.
+* `request`λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›λŠ” `call_next` ν•¨μˆ˜.
+    * μ΄ ν•¨μˆ˜λŠ” `request`λ₯Ό ν•΄λ‹Ήν•˜λŠ” *경둜 μž‘μ—…*으둜 μ „λ‹¬ν•©λ‹ˆλ‹€.
+    * κ·ΈλŸ° λ‹€μŒ, *경둜 μž‘μ—…*에 μ˜ν•΄ μƒμ„±λœ `response` λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
+* `response`λ₯Ό λ°˜ν™˜ν•˜κΈ° μ „에 μΆ”κ°€λ‘œ `response`λ₯Ό μˆ˜μ •ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+```Python hl_lines="8-9  11  14"
+{!../../../docs_src/middleware/tutorial001.py!}
+```
+
+!!! tip "팁"
+    μ‚¬μš©μž μ •μ˜ ν—€λ”λŠ” <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">'X-' μ ‘두사λ₯Ό μ‚¬μš©</a>ν•˜μ—¬ μΆ”κ°€ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+    κ·ΈλŸ¬λ‚˜ λ§Œμ•½ ν΄λΌμ΄μ–ΈνŠΈμ˜ λΈŒλΌμš°μ €μ—μ„œ λ³Ό μˆ˜ μžˆλŠ” μ‚¬μš©μž μ •μ˜ ν—€λ”λ₯Ό κ°€μ§€κ³  μžˆλ‹€λ©΄, κ·Έκ²ƒλ“€μ„ CORS μ„€μ •([CORS (Cross-Origin Resource Sharing)](cors.md){.internal-link target=_blank})에 <a href="https://www.starlette.io/middleware/#corsmiddleware" class="external-link" target="_blank">Starlette CORS λ¬Έμ„œ</a>에 λͺ…μ‹œλœ `expose_headers` λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ ν—€λ”듀을 μΆ”κ°€ν•˜μ—¬μ•Όν•©λ‹ˆλ‹€.
+
+!!! note "기술적 μ„ΈλΆ€μ‚¬ν•­"
+    `from starlette.requests import request`λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
+
+    **FastAPI**λŠ” κ°œλ°œμžμ—κ²Œ νŽΈμ˜λ₯Ό μœ„ν•΄ μ΄λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Starletteμ—μ„œ μ§μ ‘ νŒŒμƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
+
+### `response`의 μ „κ³Ό ν›„
+
+*경둜 μž‘동*을 λ°›κΈ° μ „ `request`와 ν•¨κ»˜ μž‘동할 μˆ˜ μžˆλŠ” μ½”λ“œλ₯Ό μΆ”κ°€ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+그리고 `response` λ˜ν•œ μƒμ„±λœ ν›„ λ°˜ν™˜λ˜κΈ° μ „에 μ½”λ“œλ₯Ό μΆ”κ°€ ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+예λ₯Ό λ“€μ–΄, μš”청을 μˆ˜ν–‰ν•˜κ³  μ‘닡을 μƒμ„±ν•˜λŠ”λ° κΉŒμ§€ κ±Έλ¦° μ‹œκ°„ κ°’을 κ°€μ§€κ³  μžˆλŠ” `X-Process-Time` κ°™μ€ μ‚¬μš©μž μ •μ˜ ν—€λ”λ₯Ό μΆ”κ°€ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+```Python hl_lines="10  12-13"
+{!../../../docs_src/middleware/tutorial001.py!}
+```
+
+## λ‹€λ₯Έ λ―Έλ“€μ›¨μ–΄
+
+미듀웨어에 λŒ€ν•œ λ” λ§Žμ€ μ •λ³΄λŠ” [μˆ™λ ¨λœ μ‚¬μš©μž μ•ˆλ‚΄μ„œ: ν–₯μƒλœ λ―Έλ“€μ›¨μ–΄](../advanced/middleware.md){.internal-link target=\_blank}μ—μ„œ ν™•인할 μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+λ‹€μŒ λΆ€λΆ„μ—μ„œ λ―Έλ“€μ›¨μ–΄μ™€ ν•¨κ»˜ <abbr title="ꡐ차-좜처 λ¦¬μ†ŒμŠ€ κ³΅μœ ">CORS</abbr>λ₯Ό μ–΄λ–»κ²Œ λ‹€λ£¨λŠ”μ§€μ— λŒ€ν•΄ ν™•인할 κ²ƒμž…λ‹ˆλ‹€.