1. ホーム
  2. rest

ReST over websocketsは可能ですか?

2023-12-08 01:48:40

質問

ReSTfulリクエストを取り込み、XMPPに変換してXMPPサーバーに配信するWebベースのチャットアプリケーションを開発することを計画しています。

この種のチャット ベースのアプリケーションに WebSocket を使用すると、イベント (または応答) を非同期に配信できるため、有望に見えました。しかし、ブラウザから要求を転送するための基礎的なプロトコルとして Web ソケットを使用する場合、これはまだ ReSTful デザインと見なすことができますか? もしそうなら、URI、動詞(GET、POST...)、パラメータはどのようにwebsocketメッセージで表現されるのでしょうか?xml/jsonでそれらをラップして送信しますか?

また、ReSTfulアーキテクチャは、セッション状態がサーバーに保存されないことを述べています。しかし、このケースでは、XMPPクライアントセッションが作成されると、このセッションの状態がサーバーに保存されます(ステートレス制約に違反します)。

どのように解決するのでしょうか?

REST は、プロトコルを押し付けないアーキテクチャスタイルです。ですから、そうです。お望みであれば、Web ソケットを使った REST、HTTP を使った REST、FTP を使った REST を行うことができます。

HTTPを使用する主な理由は、HTTP経由で任意のコンポーネントやプログラミング言語と通信するのが簡単でかなりシンプルであることと、HTTPが複数の仲介者(プロキシ、ファイアウォールなど)を持つ分散環境をサポートするからです。

私の戯言です。 もしあなたがRESTlibanで、Roy Fieldingの論文が真実の源であるならば、動詞は意味論の一部として決して認められません。URIがセマンティックなのです。異なるアクションに異なる動詞を使用することは、HTTP上のRESTのエレガントな進化ですが、"truth"の一部ではありません。のシナリオを確認することができます。 rest over HTTP のシナリオは、第 6 章で Roy が評価した のシナリオを確認できます。動詞については言及されていません。そして、それは評価シナリオであり、仕様ではないことに注意してください。

TLDRです。

インターネットを介したリアルタイムの双方向通信が必要で、クライアントがWebブラウザの場合、最良の選択はWebソケットです。そして、RESTfulなWebサービスを実装するために、Webソケットの上にアプリケーションレベルのプロトコルを実装することができます。