You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.6 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!}

🛃 GzipRoute 🎓

⏭, 👥🛃 🏿 fastapi.routing.APIRoute 👈 🔜⚙️ GzipRequest.

👉 🕰, 🔜 📁 👩‍🔬 APIRoute.get_route_handler().

👉 👩‍🔬 📨 🔢. & 👈 🔢 🔜 📨 📨 & 📨 📨.

📥 👥 ⚙️ ️ ✍ GzipRequest ➡️ ⏮️ 📨.

{!../../../docs_src/custom_request_and_route/tutorial001.py!}

!!! note "📡 ℹ" Request ✔️ request.scope 🔢, 👈 🐍 dict ⚗ 🗃 🔗 📨.

 `Request` ✔️ `request.receive`, 👈 🔢 "📨" 💪 📨.

 `scope` `dict` & `receive` 🔢 👯‍♂️ 🍕 🔫 🔧.

 & 👈 2️⃣ 👜, `scope` & `receive`, ⚫️❔ 💪 ✍ 🆕 `Request` 👐.

💡 🌅 🔃 `Request` ✅ <a href="https://www.starlette.io/requests/" class="external-link" target="_blank">💃 🩺 🔃 📨</a>.

🕴 👜 🔢 📨 GzipRequest.get_route_handler 🔨 🎏 🗜 Request GzipRequest.

🔨 👉, 👆 GzipRequest 🔜 💅 🗜 📊 (🚥 💪) ⏭ 🚶‍♀️ 👆 🛠️.

⏮️ 👈, 🌐 🏭🎏.

↩️ 👆 🔀 GzipRequest.body, 📨 💪 🔜 🔁 🗜 🕐 📐 FastAPI 🕐 💪.

🔐 📨 💪🐕‍🦺

!!! tip 👉 🎏 ⚠, 🎲 📚 ⚙️ body 🛃 🐕‍🦺 RequestValidationError (🚚 ❌{.internal-link target=_blank}).

✋️ 👉 🖼 ☑ &amp; ⚫️ 🎦 ❔ 🔗 ⏮️ 🔗 🦲.

👥 💪 ⚙️ 👉 🎏 🎯 🔐 📨 💪🐕‍🦺.

🌐 👥 💪 🍵 📨 🔘 try/except 🍫:

{!../../../docs_src/custom_request_and_route/tutorial002.py!}

🚥📉, Request 👐 🔜 ↔, 👥 💪 ✍ & ⚒ ⚙️ 📨 💪 🕐 🚚 :

{!../../../docs_src/custom_request_and_route/tutorial002.py!}

🛃 APIRoute 🎓 📻

👆 💪route_class 🔢 APIRouter:

{!../../../docs_src/custom_request_and_route/tutorial003.py!}

👉 🖼, 🛠️ 🔽 router 🔜 ⚙️ 🛃 TimedRoute 🎓, & 🔜 ✔️ X-Response-Time 🎚 📨 ⏮️ 🕰 🏗 📨:

{!../../../docs_src/custom_request_and_route/tutorial003.py!}