diff --git a/fastapi/applications.py b/fastapi/applications.py index 05c7bd2be..4e42ddd88 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..33019313c 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -860,6 +860,19 @@ 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,