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