# ð ðĻ & 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] *}