APIRouter Class — fastapi Architecture
Architecture documentation for the APIRouter class in routing.py from the fastapi codebase.
Entity Profile
Dependency Diagram
graph TD ecadd3bc_0c58_b4e5_06d8_57da79199adc["APIRouter"] aa28685f_bb97_e988_ff40_3e5385960f32["APIRoute"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|extends| aa28685f_bb97_e988_ff40_3e5385960f32 400570c6_159a_07b5_2e94_ba32f34336f9["APIWebSocketRoute"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|extends| 400570c6_159a_07b5_2e94_ba32f34336f9 de395a51_26f8_3424_1af0_2f5bef39c893["routing.py"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|defined in| de395a51_26f8_3424_1af0_2f5bef39c893 fbb5c527_c628_1375_0b4b_0dc27f28dba6["__init__()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| fbb5c527_c628_1375_0b4b_0dc27f28dba6 6cff2dad_2230_1fe5_9de2_64e60765b27c["route()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 6cff2dad_2230_1fe5_9de2_64e60765b27c 27778071_8d5b_35e0_a46c_5aa1fbf21fac["add_api_route()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 27778071_8d5b_35e0_a46c_5aa1fbf21fac 6a8dad5e_61e5_8086_e2a6_e7db4a0c2ceb["api_route()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 6a8dad5e_61e5_8086_e2a6_e7db4a0c2ceb 50d27352_5915_310d_fe1d_f8784a990ec3["add_api_websocket_route()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 50d27352_5915_310d_fe1d_f8784a990ec3 b52314f4_2210_73b7_9368_6287f2dc93a0["websocket()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| b52314f4_2210_73b7_9368_6287f2dc93a0 62e33f81_1889_a252_c9d6_5c79e5cc671e["websocket_route()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 62e33f81_1889_a252_c9d6_5c79e5cc671e c1d02f65_9a84_123a_bdd4_304e5732f35a["include_router()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| c1d02f65_9a84_123a_bdd4_304e5732f35a 1b892f95_174f_a6fa_5ff9_9cd8b88e8ee0["get()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 1b892f95_174f_a6fa_5ff9_9cd8b88e8ee0 c1007317_485d_af85_4574_92026d01331d["put()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| c1007317_485d_af85_4574_92026d01331d 12dce19e_74a0_f6cd_7c8f_689f6d3bd491["post()"] ecadd3bc_0c58_b4e5_06d8_57da79199adc -->|method| 12dce19e_74a0_f6cd_7c8f_689f6d3bd491
Relationship Graph
Source Code
fastapi/routing.py lines 713–4634
class APIRouter(routing.Router):
"""
`APIRouter` class, used to group *path operations*, for example to structure
an app in multiple files. It would then be included in the `FastAPI` app, or
in another `APIRouter` (ultimately included in the app).
Read more about it in the
[FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.tiangolo.com/tutorial/bigger-applications/).
## Example
```python
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.get("/users/", tags=["users"])
async def read_users():
return [{"username": "Rick"}, {"username": "Morty"}]
app.include_router(router)
```
"""
def __init__(
self,
*,
prefix: Annotated[str, Doc("An optional path prefix for the router.")] = "",
tags: Annotated[
Optional[list[Union[str, Enum]]],
Doc(
"""
A list of tags to be applied to all the *path operations* in this
router.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/).
"""
),
] = None,
dependencies: Annotated[
Optional[Sequence[params.Depends]],
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to all the
*path operations* in this router.
Read more about it in the
[FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
"""
),
] = None,
default_response_class: Annotated[
type[Response],
Doc(
"""
The default response class to be used.
Read more in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class).
"""
),
] = Default(JSONResponse),
responses: Annotated[
Optional[dict[Union[int, str], dict[str, Any]]],
Doc(
"""
Additional responses to be shown in OpenAPI.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Additional Responses in OpenAPI](https://fastapi.tiangolo.com/advanced/additional-responses/).
And in the
[FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
Domain
Defined In
Extends
Source
Frequently Asked Questions
What is the APIRouter class?
APIRouter is a class in the fastapi codebase, defined in fastapi/routing.py.
Where is APIRouter defined?
APIRouter is defined in fastapi/routing.py at line 713.
What does APIRouter extend?
APIRouter extends APIRoute, APIWebSocketRoute.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free