Home / Class/ APIRouter Class — fastapi Architecture

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

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