# ð ðĻ & APIRoute ð
ðž, ð 5ïļâĢð ð ð â âïļ `Request` & `APIRoute` ð.
ðŊ, ð 5ïļâĢð ð ð â ð ïļ.
ðž, ðĨ ð ð â âïļ ðŽ ðĻ ðŠ â âŦïļ ð ïļ ð ðļ.
!!! danger
ð "ð§" â.
ðĨ ð âķïļ âŪïļ **FastAPI** ð ðŠ ð ðķ ð ð.
## âïļ ðž
âïļ ðž ð:
* ð ðŦ-ðŧ ðĻ ðŠ ðŧ (â
`msgpack`).
* ð ð-ð ðĻ ðŠ.
* ð ðĻ ð ðĻ ðŠ.
## ð ð ðĻ ðŠ ðĒ
âĄïļ ð â â âïļ ð `Request` ðŋ ð ð ðĻ.
& `APIRoute` ðŋ âïļ ð ð ðĻ ð.
### â ð `GzipRequest` ð
!!! tip
ð ð§ļ ðž ðĶ â âŦïļ ð·, ðĨ ð ðŠ ð ðâðĶš, ð ðŠ âïļ ð [`GzipMiddleware`](./middleware.md#gzipmiddleware){.internal-link target=_blank}.
ðĨ, ðĨ â `GzipRequest` ð, â ð ð `Request.body()` ðĐâðŽ ð ðŠ ð â ð.
ðĨ ðĪ ð
ââ `gzip` ð, âŦïļ ð ðŦ ð ð ðŠ.
ð ð, ð ðĢ ð ðŠ ðĩ ð ð âïļ ð ðĻ.
```Python hl_lines="8-15"
{!../../../docs_src/custom_request_and_route/tutorial001.py!}
```
### â ð `GzipRoute` ð
â, ðĨ â ð ðŋ `fastapi.routing.APIRoute` ð ð â âïļ `GzipRequest`.
ð ð°, âŦïļ ð ð ðĐâðŽ `APIRoute.get_route_handler()`.
ð ðĐâðŽ ðĻ ðĒ. & ð ðĒ âŦïļâ ð ðĻ ðĻ & ðĻ ðĻ.
ðĨ ðĨ âïļ âŦïļ â `GzipRequest` âŠïļâĄïļ âŪïļ ðĻ.
```Python hl_lines="18-26"
{!../../../docs_src/custom_request_and_route/tutorial001.py!}
```
!!! 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#use-the-requestvalidationerror-body){.internal-link target=_blank}).
âïļ ð ðž â & âŦïļ ðĶ â ð âŪïļ ð ðĶē.
ðĨ ðŠ âïļ ð ð ðŊ ð ðĻ ðŠ â ðâðĶš.
ð ðĨ ðŠ ðĩ ðĻ ð `try`/`except` ðŦ:
```Python hl_lines="13 15"
{!../../../docs_src/custom_request_and_route/tutorial002.py!}
```
ðĨ â ð, `Request` ð ð â, ðĨ ðŠ â & â âïļ ðĻ ðŠ ðâ ð â:
```Python hl_lines="16-18"
{!../../../docs_src/custom_request_and_route/tutorial002.py!}
```
## ð `APIRoute` ð ðŧ
ð ðŠ â `route_class` ðĒ `APIRouter`:
```Python hl_lines="26"
{!../../../docs_src/custom_request_and_route/tutorial003.py!}
```
ð ðž, *⥠ð ïļ* ð― `router` ð âïļ ð `TimedRoute` ð, & ð âïļ â `X-Response-Time` ð ðĻ âŪïļ ð° âŦïļ â ð ðĻ:
```Python hl_lines="13-20"
{!../../../docs_src/custom_request_and_route/tutorial003.py!}
```