ストリーミング寺子屋
音声・動画のストリーミング機能を
開発するエンジニアのための
実践的なナレッジベース
【開発環境ほか-4】RESTful APIについて教えて下さい。
定義
- RESTful API
RESTの指針となる原則と制約に従い、Webサービスと対話/やり取り/情報交換を可能にする インターフェースのこと。REST APIとも言います。 - REST
REpresentational State Transferの略。指針となる原則と制約がある、分散型ハイパーメディアシステムのアーキテクチャです。
準拠が必要な基準
RESTfulは、以下の基準に準拠する必要があります。
- クライアントとサーバー
クライアントとサーバーのコンポーネントは明確に定義され、分離されるます。分離されることによって、それぞれのコンポーネントが単純化し、独立してコンポーネントが進化できます。- API実装時:HTTPではクライアントで発生したエラーとサーバーで発生したエラーを、エラーコードで区別する必要があります。
- API実装時:HTTPではクライアントで発生したエラーとサーバーで発生したエラーを、エラーコードで区別する必要があります。
- ステートレス
クライアントからサーバーへのそれぞれのリクエストは、リクエストを理解するために必要なすべての情報を含まなければなりません。
サーバに保存されているコンテキストは利用できず、セッションの状態は完全にクライアント側に保持されます。リクエスト間で状態を保持する必要がないため、リソースを素早く解放でき、さらに実装を簡略化することもできるため、スケーラビリティが向上します。- API実装時:クライアントの認証情報、認証結果を保持しないため、要求毎に認証情報がないとエラーで返す実装が必要になります。
- API実装時:クライアントの認証情報、認証結果を保持しないため、要求毎に認証情報がないとエラーで返す実装が必要になります。
- キャッシュ制約
クライアントのリクエストに対するレスポンスをラベル付けし、その後の同じリクエストにレスポンスを再利用できる権利が与えられます。
キャッシュ制約があることでネットワーク効率を向上させることができます。一部のやり取りの待ち時間を短縮でき、スケーラビリティとユーザーが感じる性能を向上させます。- API実装時:キャッシュとしてはすべてのデータを保持する必要はありません。例えば、複数のデータを持っている場合、変更の少ない項目はキャッシュとして保持し、変更が多い項目は、都度、必要に応じて取得する方が効率が良いです。データを長期間保持しているとキャッシュが一杯になってしまう可能性があるので、データの有効期限を設定し、短期間でキャッシュ を削除したり、期限切れにならないように有効期限を伸ばしたり設定する必要があります。
- API実装時:キャッシュとしてはすべてのデータを保持する必要はありません。例えば、複数のデータを持っている場合、変更の少ない項目はキャッシュとして保持し、変更が多い項目は、都度、必要に応じて取得する方が効率が良いです。データを長期間保持しているとキャッシュが一杯になってしまう可能性があるので、データの有効期限を設定し、短期間でキャッシュ を削除したり、期限切れにならないように有効期限を伸ばしたり設定する必要があります。
- 統一されたインターフェイス
コンポーネント間で統一されたインターフェイスの要件を満たすこと。- リクエストはリソースを特定するURI(Uniform Resource Identifier)を使用する。
- クライアントはリソースを変更または削除できる情報を受け取り、リソースを操作できる。
- クライアントはリソースを最適に使用するためのメタデータを含む自己記述型メッセージを受け取る。
- クライアントはリソースにアクセス後、ハイパーテキスト/ハイパーメディアが使用できる。
- API実装時:RESTful APIで実装するHTTPメソッドは複数回要求しても結果が変わらない、べき等である必要があります。例えばPUTやDELETEを複数回要求しても「リソースの内容が更新されている」「リソースが削除されている」などの同じ結果が得られますが、POSTを複数回要求するとその回数だけリソースに内容が追加されていき、べき等ではありません。
- レイヤードシステム
各コンポーネントが相互作用している直近のレイヤーを越えて「見る」ことができないように、コンポーネントの動作を制約し、アーキテクチャを階層的なレイヤーで構成することを可能にします。
使用頻度の低い機能を中間層に移動させることや、情報を1つの層に限定することでシステム全体の複雑さを抑えることができます。中間層は、複数のネットワークやプロセッサにまたがるサービスの負荷を分散でき、システムのスケーラビリティを向上させます。- API実装時:以下のようなレイヤー構成の場合、data base上でエラーが発生するとレイヤーを介してapiレイヤーがHTTP 404などのエラーを返します。
api → domain service → authorization / database → entities
- API実装時:以下のようなレイヤー構成の場合、data base上でエラーが発生するとレイヤーを介してapiレイヤーがHTTP 404などのエラーを返します。
- コードオンデマンド
アプレットやスクリプトの形でコードをダウンロードして実行することで、クライアントの機能を拡張できます。事前に実装する必要ある機能を減らし、クライアントを簡略化することができます。システムの拡張性を高めることができますが、可視性が低下するため、RESTでは任意のオプションになっています。- API実装時:ディレクトリへの書き込みを可能性にしたり、特定のコンテンツはファイヤーウォールを越えることができるような実装にするなど。
Q&A
キーワード検索
-
ストリーミング技術
- 【Streaming-1】ストリーミングのシーケンスについて教えて下さい。
- 【Streaming-2】ストリーミング配信の遅延が大きいです。確認するポイントを教えて下さい。
- 【Streaming-3】ストリームの再生に失敗しました。確認するポイントを教えて下さい。
- 【Streaming-4】長時間配信時に画像の表示が滲みます。確認するポイントを教えて下さい。
- 【Streaming-5】画像が緑色で表示されます。確認するポイントを教えて下さい。
- 【Streaming-6】画像の一部しかきれいに表示されません。確認するポイントを教えて下さい。
- 【Streaming-7】ストリーミングデータは配信されているのに、映像が表示されません。確認するポイントを教えて下さい。
- 【Streaming-8】WebRTCを導入する際の技術的なポイントを教えて下さい。
- 【Streaming-9】Webブラウザでストリーミングを再生する手法を教えて下さい。
- 【Streaming-10】カメラで撮影した映像を確認するお勧めの環境はありますか。
- 【Streaming-11】ストリーミングの試験で注意すべきポイントを教えて下さい。
-
ネットワーク技術
- 【Network技術-1】QUICについて教えて下さい。
- 【Network技術-2】リアルタイム処理にUDPだけではなく、TCPも使われる理由を教えて下さい。
- 【Network技術-3】再送が保証されているTCPを使用しても、映像が乱れてしまう理由を教えて下さい。
- 【Network技術-4】TCPの通信ソケットが残り続けています。確認するポイントを教えて下さい。
- 【Network技術-5】サーバとの通信が断続的に途切れます。確認するポイントを教えて下さい。
- 【Network技術-6】TCP通信が zero window になり、継続できません。確認するポイントを教えて下さい。
- 【Network技術-7】TCP通信が断続的に途切れ、データがスムースに流れません。確認するポイントを教えて下さい。
- 【Network技術-8】TCPのデータ受信が、あるタイミングで極端に遅くなります。確認するポイントを教えて下さい・
- 【Network技術-9】SSL通信によるデータが受信出来ません。確認するポイントを教えて下さい。
- 【Network技術-10】ネットワーク品質の良し悪しを確認する、お勧めの方法はあります?。
-
ONVIF
- 【ONVIF-1】ONVIFのシーケンスについて教えて下さい。
- 【ONVIF-2】ONVIF Profileの種類と、どこまで対応すれば良いのか教えて下さい。
- 【ONVIF-3】ONVIF認証を取得したいです。最低限対応すべき機能、技術的な注意点はありますか?
- 【ONVIF-4】ONVIF準拠のカメラが接続できません。確認すべきポイントを教えて下さい。
- 【ONVIF-5】IPv6環境でONVIFは実現できますか?ONVIF準拠にIPv6は必要ですか?
- 【ONVIF-6】録画機能を持つカメラの録画データをONVIFで取得できますか?
- 【ONVIF-7】メタデータとカメラ映像を紐付けたいです。ONVIFでできますか?
- 【ONVIF-8】イベントをトリガーにカメラのPTZ操作、映像録画を行いたいです。ONVIFでできますか?
- 【ONVIF-9】指定時刻の前後N秒の映像を取得したいです。ONVIFでできますか?
- 【ONVIF-10】ONVIFで、YouTubeに映像をアップロードできますか?
-
NICE
- 【NICE-1】NICEとは何ですか?
- 【NICE-2】NICE Allianceが提供するクラウドサービスのサービス名を教えてください。
- 【NICE-3】NICE LA/ASに接続する際の技術的なポイントを教えて下さい。
- 【NICE-4】SceneDataはどのように作成されますか?
- 【NICE-5】SceneMark 作成の難易度はどれくらいですか?
- 【NICE-6】NICEの暗号化通信はどのような方法で行われますか。
- 【NICE-7】NICEを使用するにあたりCloud Serviceを自身で立てる必要は有りますか。
- 【NICE-8】NICEはカメラのストリーミングとして何をサポートしていますか?
- 【NICE-9】NICE Appはどのような機能を持っていますか?
- 【NICE-10】NICEに対応する際の技術的なポイントを教えて下さい。
-
開発環境ほか
製品情報
-
プロトコルスタック(ミドルウェア)
-
エンジニアリングサービス