diff --git a/fastapi/applications.py b/fastapi/applications.py index 05c7bd2be..a2fe8b349 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -1053,6 +1053,11 @@ class FastAPI(Starlette): scope["root_path"] = self.root_path await super().__call__(scope, receive, send) + def mount( + self, path: str, app: ASGIApp, name: str | None = None + ) -> None: # pragma: no cover + self.router._mount(path, app=app, name=name) # pragma: no cover + def add_api_route( self, path: str, diff --git a/fastapi/routing.py b/fastapi/routing.py index 54c75a027..cfd569cb0 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -860,6 +860,20 @@ class APIRouter(routing.Router): self.default_response_class = default_response_class self.generate_unique_id_function = generate_unique_id_function + @deprecated( + "Mounting sub-application on router is not supported. " + "Use the `mount` method of FastAPI instance instead." + ) + def mount(self, *args, **kwargs) -> None: # pragma: no cover + raise NotImplementedError( + "APIRouter does not support mounting other ASGI applications." + ) + + def _mount( + self, path: str, app: ASGIApp, name: str | None = None + ) -> None: # pragma: no cover + super().mount(path=path, app=app, name=name) + def route( self, path: str,