# 🛃 ðŸ“Ļ & APIRoute 🎓 💞, 👆 5ïļâƒĢ📆 💚 🔐 ⚛ ⚙ïļ `Request` & `APIRoute` 🎓. ðŸŽŊ, 👉 5ïļâƒĢ📆 👍 🎛 ⚛ 🛠ïļ. 🖞, ðŸšĨ 👆 💚 ✍ ⚖ïļ ðŸ”Ž ðŸ“Ļ 💊 ⏭ âšŦïļ ðŸ› ïļ ðŸ‘† ðŸˆļ. /// danger 👉 "🏧" ⚒. ðŸšĨ 👆 â–ķïļ âŪïļ **FastAPI** 👆 💊 💚 ðŸšķ 👉 📄. /// ## ⚙ïļ ðŸ’ž ⚙ïļ ðŸ’ž 🔌: * 🏭 ðŸšŦ-ðŸŽŧ ðŸ“Ļ 💊 ðŸŽŧ (✅ `msgpack`). * 🗜 🗜-🗜 ðŸ“Ļ 💊. * 🔁 ðŸšĻ 🌐 ðŸ“Ļ 💊. ## 🚚 🛃 ðŸ“Ļ 💊 ðŸ”Ē ➡ïļ ðŸ‘€ ❔ ⚒ ⚙ïļ ðŸ›ƒ `Request` ðŸŋ 🗜 🗜 ðŸ“Ļ. & `APIRoute` ðŸŋ ⚙ïļ ðŸ‘ˆ 🛃 ðŸ“Ļ 🎓. ### ✍ 🛃 `GzipRequest` 🎓 /// tip 👉 ðŸ§ļ 🖞 ðŸŽĶ ❔ âšŦïļ ðŸ‘·, ðŸšĨ 👆 💊 🗜 🐕‍ðŸĶš, 👆 💊 ⚙ïļ ðŸšš [`GzipMiddleware`](../advanced/middleware.md#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` ([🚚 ❌](../tutorial/handling-errors.md#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] *}