mirror of https://github.com/tiangolo/fastapi.git
🐛 Fix support for prefix on APIRouter WebSockets (#2640)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
This commit is contained in:
parent
cb4da93643
commit
d81c908132
|
|
@ -649,7 +649,7 @@ class APIRouter(routing.Router):
|
||||||
self, path: str, endpoint: Callable[..., Any], name: Optional[str] = None
|
self, path: str, endpoint: Callable[..., Any], name: Optional[str] = None
|
||||||
) -> None:
|
) -> None:
|
||||||
route = APIWebSocketRoute(
|
route = APIWebSocketRoute(
|
||||||
path,
|
self.prefix + path,
|
||||||
endpoint=endpoint,
|
endpoint=endpoint,
|
||||||
name=name,
|
name=name,
|
||||||
dependency_overrides_provider=self.dependency_overrides_provider,
|
dependency_overrides_provider=self.dependency_overrides_provider,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from fastapi.testclient import TestClient
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
prefix_router = APIRouter()
|
prefix_router = APIRouter()
|
||||||
|
native_prefix_route = APIRouter(prefix="/native")
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -47,8 +48,16 @@ async def router_ws_decorator_depends(
|
||||||
await websocket.close()
|
await websocket.close()
|
||||||
|
|
||||||
|
|
||||||
|
@native_prefix_route.websocket("/")
|
||||||
|
async def router_native_prefix_ws(websocket: WebSocket):
|
||||||
|
await websocket.accept()
|
||||||
|
await websocket.send_text("Hello, router with native prefix!")
|
||||||
|
await websocket.close()
|
||||||
|
|
||||||
|
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
app.include_router(prefix_router, prefix="/prefix")
|
app.include_router(prefix_router, prefix="/prefix")
|
||||||
|
app.include_router(native_prefix_route)
|
||||||
|
|
||||||
|
|
||||||
def test_app():
|
def test_app():
|
||||||
|
|
@ -72,6 +81,13 @@ def test_prefix_router():
|
||||||
assert data == "Hello, router with prefix!"
|
assert data == "Hello, router with prefix!"
|
||||||
|
|
||||||
|
|
||||||
|
def test_native_prefix_router():
|
||||||
|
client = TestClient(app)
|
||||||
|
with client.websocket_connect("/native/") as websocket:
|
||||||
|
data = websocket.receive_text()
|
||||||
|
assert data == "Hello, router with native prefix!"
|
||||||
|
|
||||||
|
|
||||||
def test_router2():
|
def test_router2():
|
||||||
client = TestClient(app)
|
client = TestClient(app)
|
||||||
with client.websocket_connect("/router2") as websocket:
|
with client.websocket_connect("/router2") as websocket:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue