3.5 KiB
🛃 📨 & APIRoute 🎓
💼, 👆 5️⃣📆 💚 🔐 ⚛ ⚙️ Request
& APIRoute
🎓.
🎯, 👉 5️⃣📆 👍 🎛 ⚛ 🛠️.
🖼, 🚥 👆 💚 ✍ ⚖️ 🔬 📨 💪 ⏭ ⚫️ 🛠️ 👆 🈸.
/// danger
👉 "🏧" ⚒.
🚥 👆 ▶️ ⏮️ FastAPI 👆 💪 💚 🚶 👉 📄.
///
⚙️ 💼
⚙️ 💼 🔌:
- 🏭 🚫-🎻 📨 💪 🎻 (✅
msgpack
). - 🗜 🗜-🗜 📨 💪.
- 🔁 🚨 🌐 📨 💪.
🚚 🛃 📨 💪 🔢
➡️ 👀 ❔ ⚒ ⚙️ 🛃 Request
🏿 🗜 🗜 📨.
& APIRoute
🏿 ⚙️ 👈 🛃 📨 🎓.
✍ 🛃 GzipRequest
🎓
/// tip
👉 🧸 🖼 🎦 ❔ ⚫️ 👷, 🚥 👆 💪 🗜 🐕🦺, 👆 💪 ⚙️ 🚚 GzipMiddleware
{.internal-link target=_blank}.
///
🥇, 👥 ✍ GzipRequest
🎓, ❔ 🔜 📁 Request.body()
👩🔬 🗜 💪 🔍 ☑ 🎚.
🚥 📤 🙅♂ gzip
🎚, ⚫️ 🔜 🚫 🔄 🗜 💪.
👈 🌌, 🎏 🛣 🎓 💪 🍵 🗜 🗜 ⚖️ 🗜 📨.
{* ../../docs_src/custom_request_and_route/tutorial001.py hl[8:15] *}
✍ 🛃 GzipRoute
🎓
⏭, 👥 ✍ 🛃 🏿 fastapi.routing.APIRoute
👈 🔜 ⚒ ⚙️ GzipRequest
.
👉 🕰, ⚫️ 🔜 📁 👩🔬 APIRoute.get_route_handler()
.
👉 👩🔬 📨 🔢. & 👈 🔢 ⚫️❔ 🔜 📨 📨 & 📨 📨.
📥 👥 ⚙️ ⚫️ ✍ GzipRequest
⚪️➡️ ⏮️ 📨.
{* ../../docs_src/custom_request_and_route/tutorial001.py hl[18:26] *}
/// note | 📡 ℹ
Request
✔️ request.scope
🔢, 👈 🐍 dict
⚗ 🗃 🔗 📨.
Request
✔️ request.receive
, 👈 🔢 "📨" 💪 📨.
scope
dict
& receive
🔢 👯♂️ 🍕 🔫 🔧.
& 👈 2️⃣ 👜, scope
& receive
, ⚫️❔ 💪 ✍ 🆕 Request
👐.
💡 🌅 🔃 Request
✅ 💃 🩺 🔃 📨.
///
🕴 👜 🔢 📨 GzipRequest.get_route_handler
🔨 🎏 🗜 Request
GzipRequest
.
🔨 👉, 👆 GzipRequest
🔜 ✊ 💅 🗜 📊 (🚥 💪) ⏭ 🚶♀️ ⚫️ 👆 ➡ 🛠️.
⏮️ 👈, 🌐 🏭 ⚛ 🎏.
✋️ ↩️ 👆 🔀 GzipRequest.body
, 📨 💪 🔜 🔁 🗜 🕐❔ ⚫️ 📐 FastAPI 🕐❔ 💪.
🔐 📨 💪 ⚠ 🐕🦺
/// tip
❎ 👉 🎏 ⚠, ⚫️ 🎲 📚 ⏩ ⚙️ body
🛃 🐕🦺 RequestValidationError
(🚚 ❌{.internal-link target=_blank}).
✋️ 👉 🖼 ☑ & ⚫️ 🎦 ❔ 🔗 ⏮️ 🔗 🦲.
///
👥 💪 ⚙️ 👉 🎏 🎯 🔐 📨 💪 ⚠ 🐕🦺.
🌐 👥 💪 🍵 📨 🔘 try
/except
🍫:
{* ../../docs_src/custom_request_and_route/tutorial002.py hl[13,15] *}
🚥 ⚠ 📉, Request
👐 🔜 ↔, 👥 💪 ✍ & ⚒ ⚙️ 📨 💪 🕐❔ 🚚 ❌:
{* ../../docs_src/custom_request_and_route/tutorial002.py hl[16:18] *}
🛃 APIRoute
🎓 📻
👆 💪 ⚒ route_class
🔢 APIRouter
:
{* ../../docs_src/custom_request_and_route/tutorial003.py hl[26] *}
👉 🖼, ➡ 🛠️ 🔽 router
🔜 ⚙️ 🛃 TimedRoute
🎓, & 🔜 ✔️ ➕ X-Response-Time
🎚 📨 ⏮️ 🕰 ⚫️ ✊ 🏗 📨:
{* ../../docs_src/custom_request_and_route/tutorial003.py hl[13:20] *}