Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

最新ガイド:FastAPIでWebsocketを使用する

FastAPIは、PythonでWeb APIを構築するための高性能なフレームワークとして、Websocketというプロトコルにも対応できます。本文では、 FastAPIでWebsocketを利用する完全なガイドを詳しく解説します。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

FastAPIは、PythonでWeb APIを構築するための高性能なフレームワークとして、Websocketというプロトコルにも対応できます。本文では、 FastAPIでWebsocketを利用する完全なガイドを詳しく解説します。

WebsocketとFastAPI

Websocketとは

Websocketは、HTTPとは異なるプロトコルで、クライアントとサーバー間で対話的な通信を実現するために設計されています。 Websocketを使うことでリクエストとレスポンス両者間で継続的な接続を確立できるようになります。これにより、サーバーからクライアントへのデータプッシュが可能になります。また、ヘッダ情報が省略されているため通信のオーバーヘッドが少なく、高速なデータ転送が実現できる利点があります。送受信されるデータにはテキストとバイナリの両方を利用でき、用途に合わせて選択できます。

Websocketはウェブブラウザとサーバー間のリアルタイムインタラクションが必要なチャット、多人数同時プレイのゲーム、データのストリーミングなどに活用されています。FastAPIでもWebsocketを簡単に利用でき、双方向通信機能を備えたアプリケーションを開発できるでしょう。

以上のように、Websocketは実時間性とインタラクティブ性をウェブアプリケーションにもたらす、重要な通信技術だと言えます。

FastAPIとWebsocketとの関係性

その一方、FastAPIはWebsocketをサポートしているHTTPベースのAPIフレームワークです。具体的には以下のようなWebsocketの機能を提供します。

  • FastAPIのルーターを利用して、Websocketのコネクションを受け付けるパスを定義できる
  • connect、receive、disconnectなどのライフサイクルイベントに対応するハンドラを登録できる
  • AsyncなコードでWebsocketの送受信を処理できる
  • FastAPIのデコレータや依存性注入などの機能と統合して利用できる
  • Swagger UIからインタラクティブにWebsocket接続のテストができる

このように、FastAPIはWebsocketをフルサポートしており、他のHTTP APIと同様に柔軟に定義と利用が可能です。特に、Async処理との親和性が高く、リアルタイムデータのストリーミングなどに適しています。

徹底ガイド:FastAPIでWebsocketを利用する

それでは、FastAPIでWebsocketを利用するには、どうしたらいいですか?次はステップバイステップの詳細ガイドを紹介するので、必要な方はご参照ください。

FastAPIとWebsocketのインストール

まずは、FastAPIとWebsocketがパソコンにインストールされていることを確保する必要があります。次のコマンドを使って、FastAPIとWebsocketをインストールすることができます。

pip install fastapi

pip install websockets

FastAPIのアプリにWebsocketサービスを追加

次は、非常に簡単なFastAPIのアプリを作成して、それにWebsocketサービスを追加します。IDEエディターでfastapi-ws.pyというPythonファイルを作成して、そこに次のコードをコピーします。

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"Message received: {data}")


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="127.0.0.1", port=8000)

上記のコードの中で、/wsのWebsocketルーディングが作成され、Websocket接続に使われます。また、websocket_endpoint()関数の中、WebSocketがパラメータになり、accept()がWebsocketのメソッドとしています。最後に、無限ループを通して、メッセージを送受信したりすることを実現しています。

アプリの実装

FastAPIのアプリを実装してWebsocketをテストしたりするには、uvicornのようなサーバーを使用する必要があります。そこで、パソコンにuvicornがインストールされることを確認してください。まだインストールしていない場合は、次のコマンドでインストールしてください:

pip install uvicorn

そして、IDEエディターで、ターミナルを開き、fastapi-ws.pyの保存先にとなるディレクトリにCDして、次のコマンドでアプリを実装してください:

uvicorn fastapi-ws:app --reload

ここで、WebSocketのクライアントツール(Chromeのデベロッパツールのコンソールか、Websocketに対応可能なクライアント)を使って、ws://localhost:8000/wsに接続することができるようになり、サーバーにメッセージを送信したり、サーバーからメッセージを受信したりすることができます。

ApidogでWebSocketに接続してテストする

それでは、ここでWebsocketに完璧に互換できるクライアントのApidogを皆さんにお勧めします。Apidogを使用すると、非常に直感的で簡単な操作によって、Websocket APIをテストすることができます。次は、先に FastAPIで作成したWebsocket APIをテストする方法を皆さんに紹介します。

button

ステップ⒈Websocketへの接続を確立する

Apidogを使用して、アドレスバーにエンドポイントとなるURLを入力し、「接続」ボタンをクリックしてサーバーとのハンドシェイクを完了し、WebSocket接続を確立することができます。ここ「ws://localhost:8000/ws」を入力します。

Websocketへの接続を確立する

また、認証やその他の複雑なシナリオを満たすために、パラメータ、ヘッダー、クッキーなど、ハンドシェイク中に渡す必要があるパラメータをカスタマイズすることもできます。

ステップ⒉メッセージの送受信をする

接続が確立されたら、「Message」タブの下にメッセージを書くことができます。テキスト、JSON、XML、HTML、その他のテキスト形式のメッセージを直接に書くことに加えて、バイナリ形式のメッセージはBase64または16進数を使用して書くことにも対応できます。メッセージを「送信」すると、レスポンスをすぐ取得することができます。

Apidogは、接続ステータス、送信メッセージ、受信メッセージを新着順に表示する新しいタイムラインビューを提供します。あるメッセージをクリックすると、その詳細情報を簡単に表示できます。

ApidogでWebSocket APIの送受信をする

ステップ⒊WebSocket API仕様書を書く

Apidogの優れたドキュメンテーション機能は、WebSocket APIでも利用できます。WebSocket APIの状態、責任者、およびタグを設定し、Markdown形式で詳細な説明を入れることで仕様書を簡単に作成することができます。

ApidogでWebSocket API仕様書作成

もちろん、WebSocket APIの仕様書を作成すると、それを外部チームと共有したり、ブラウザで直接表示したりすることもできます。

ステップ⒋WebSocket APIを保存する

デバッグした後、「保存」ボタンをクリックしてWebSocket APIを現在のプロジェクトに保存することができます。その後、他のチームメンバーが当該APIにアクセスしたり、デバッグしたりすることができるようになります。

ApidogでWebSocket APIを保存
button
初心者必読!ApidogでのPOSTリクエスト作成法効果的な戦略

初心者必読!ApidogでのPOSTリクエスト作成法

Apidogを使用してPOSTリクエストを作成するプロセスは簡単で、API開発とテストを合理化する幅広い機能を提供します。初心者から経験豊富な開発者まで、Apidogは強力なツールとして役立ちます。

中村 拓也

10月 21, 2024

手動テスト完全解説:品質を保証する最後の砦効果的な戦略

手動テスト完全解説:品質を保証する最後の砦

手動テストはソフトウェアテストライフサイクルに欠かせない要素であり、アプリケーションの品質、使いやすさ、機能を保証します。自動化の利点がある一方で、手動テストは機械では得られない貴重な洞察と創造性を提供し、包括的なテスト戦略として重要です。

中村 拓也

10月 18, 2024

PostmanでHTTP 405 メソッドなしエラーを修正する方法効果的な戦略

PostmanでHTTP 405 メソッドなしエラーを修正する方法

HTTP 405エラーコードは、無効なAPIキーまたはアクセストークンを使用してサーバーにアクセスしようとすると発生します。この記事では、405エラーについて学び、それを修正する方法について、段階的に解説します。

中村 拓也

8月 11, 2024