From e4300769ac45c368bcb3a080fdb79890fe413355 Mon Sep 17 00:00:00 2001 From: Chih Sean Hsu <34153546+ChihSeanHsu@users.noreply.github.com> Date: Sun, 14 Jun 2020 04:51:34 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20Update=20tutorial=20for=20WebSoc?= =?UTF-8?q?kets=20with=20dependencies=20(#1540)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix websockets/tutorial002.py * fix tutorial002 in ws to correspond with test case * reformat websocket tutorial002 * fix websocket tutorial002 coverage * 📝 Update example for WebSockets with Depends * ✅ Update and refactor tests for WebSockets with dependencies * 👷 Trigger Travis, as it's not reporting to Codecov * ✅ Update WebSocket tests to raise coverage Co-authored-by: Chih Sean Hsu Co-authored-by: Sebastián Ramírez --- docs/en/docs/advanced/websockets.md | 66 +++++++++++++----- .../docs/img/tutorial/websockets/image05.png | Bin 0 -> 53330 bytes docs_src/websockets/tutorial002.py | 27 +++---- .../test_websockets/test_tutorial002.py | 38 +++++----- 4 files changed, 79 insertions(+), 52 deletions(-) create mode 100644 docs/en/docs/img/tutorial/websockets/image05.png diff --git a/docs/en/docs/advanced/websockets.md b/docs/en/docs/advanced/websockets.md index d473cef07..6cacc2e6f 100644 --- a/docs/en/docs/advanced/websockets.md +++ b/docs/en/docs/advanced/websockets.md @@ -51,6 +51,40 @@ In your WebSocket route you can `await` for messages and send messages. You can receive and send binary, text, and JSON data. +## Try it + +If your file is named `main.py`, run your application with: + +
+ +```console +$ uvicorn main:app --reload + +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +``` + +
+ +Open your browser at http://127.0.0.1:8000. + +You will see a simple page like: + + + +You can type messages in the input box, and send them: + + + +And your **FastAPI** application with WebSockets will respond back: + + + +You can send (and receive) many messages: + + + +And all of them will use the same WebSocket connection. + ## Using `Depends` and others In WebSocket endpoints you can import from `fastapi` and use: @@ -64,7 +98,7 @@ In WebSocket endpoints you can import from `fastapi` and use: They work the same way as for other FastAPI endpoints/*path operations*: -```Python hl_lines="53 54 55 56 57 58 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76" +```Python hl_lines="56 57 58 59 60 61 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79" {!../../../docs_src/websockets/tutorial002.py!} ``` @@ -75,14 +109,7 @@ They work the same way as for other FastAPI endpoints/*path operations*: In the future, there will be a `WebSocketException` that you will be able to `raise` from anywhere, and add exception handlers for it. It depends on the PR #527 in Starlette. -## More info - -To learn more about the options, check Starlette's documentation for: - -* The `WebSocket` class. -* Class-based WebSocket handling. - -## Test it +### Try the WebSockets with dependencies If your file is named `main.py`, run your application with: @@ -98,20 +125,21 @@ $ uvicorn main:app --reload Open your browser at http://127.0.0.1:8000. -You will see a simple page like: +There you can set: - +* The "Item ID", used in the path. +* The "Token" used as a query parameter. -You can type messages in the input box, and send them: +!!! tip + Notice that the query `token` will be handled by a dependency. - +With that you can connect the WebSocket and then send and receive messages: -And your **FastAPI** application with WebSockets will respond back: + - - -You can send (and receive) many messages: +## More info - +To learn more about the options, check Starlette's documentation for: -And all of them will use the same WebSocket connection. +* The `WebSocket` class. +* Class-based WebSocket handling. diff --git a/docs/en/docs/img/tutorial/websockets/image05.png b/docs/en/docs/img/tutorial/websockets/image05.png new file mode 100644 index 0000000000000000000000000000000000000000..00b0c52202b37de904b3fd9b5a5432c942ee171f GIT binary patch literal 53330 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

mh4s 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 a^?!cz316O@K3na}00f?{elF{r5}E*FxDbs1 literal 0 HcmV?d00001 diff --git a/docs_src/websockets/tutorial002.py b/docs_src/websockets/tutorial002.py index 43005e54c..5be199cd6 100644 --- a/docs_src/websockets/tutorial002.py +++ b/docs_src/websockets/tutorial002.py @@ -1,4 +1,4 @@ -from fastapi import Cookie, Depends, FastAPI, Header, WebSocket, status +from fastapi import Cookie, Depends, FastAPI, Query, WebSocket, status from fastapi.responses import HTMLResponse app = FastAPI() @@ -13,8 +13,9 @@ html = """

WebSocket Chat

+ -
+
@@ -23,8 +24,9 @@ html = """