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] *}