RESTはRepresentational State Transferの略で、Roy Fieldingによって2000年に造語されました。 これは、HTTPを介して疎結合アプリケーションを設計するためのアーキテクチャスタイルであり、webサービスの開発でよく使用されます。 RESTは、下位レベルでどのように実装すべきかについてのルールを強制するものではなく、高レベルの設計ガイドラインを作成し、独自の実装を考える
私の最後の雇用では、私は二つの良い年のために大手通信会社のためのRESTful Apiを設計しました。 この記事では、私は標準的な設計慣行とは別に私の考えを共有します。 あなたはいくつかの点で私に同意しないかもしれません、そしてそれは完全に大丈夫です。 私は開いた心とあなたからの何でも論議して幸せである。
“Roy Fielding”が私たちに何を構築したいのかを明確にするために、標準設計固有のものから始めましょう。 その後、RESTful Apiを設計する際には、より細かい点に向かって私の考えを議論します。
アーキテクチャ制約
RESTは、webサービスを真のRESTful APIにする6つのアーキテクチャ制約を定義しています。
- ユニフォームインターフェイス
- クライアント-サーバー
- ステートレス
- キャッシュ可能
- レイヤードシステム
- コード-オン-デマンド)
Uniform interface
制約名自体が適用されるので、APIコンシューマーに公開され、宗教的に従うシステム内のリソースのApiインターフェイスを決定する必要があります。 システム内のリソースには論理URIが1つだけあり、関連するデータや追加のデータを取得する方法を提供する必要があります。 リソースをwebページと同義にする方が常に優れています。
単一のリソースは大きすぎず、それぞれの表現にすべてを含むべきではありません。 関連する場合はいつでも、リソースには関連情報を取得するための相対Uriを指すリンク(HATEOAS)が含まれている必要があります。
また、システム全体のリソース表現は、命名規則、リンク形式、データ形式(XMLまたは/およびJSON)などの特定のガイドラインに従う必要があります。
すべてのリソースは、HTTP GETなどの一般的なアプローチを介してアクセスでき、同様に一貫性のあるアプローチを使用して変更する必要があります。
Client–server
この制約は、クライアントアプリケーションとサーバーアプリケーションが互いに依存せずに別々に進化できる必要があることを本質的に意味します。 クライアントはリソースUriのみを知っている必要があり、それだけです。 今日では、これはweb開発の標準的な方法なので、あなたの側からは何も空想は必要ありません。 それを簡単に保ちなさい。
ステートレス
Roy fieldingはHTTPからインスピレーションを得たので、この制約に反映されます。 すべてのクライアントとサーバーの対話をステートレスにします。 サーバーは、クライアントが行った最新のHTTP要求については何も保存しません。 すべての要求を新しいものとして扱います。 セッションなし、履歴なし。
クライアントアプリケーションがエンドユーザーのステートフルアプリケーションである必要がある場合、ユーザーが一度ログインし、その後他の承認された操
キャッシュ可能
今日の世界では、データと応答のキャッシュは、それらが適用可能/可能であればどこでも最も重要です。 ここで読んでいるwebページは、HTMLページのキャッシュされたバージョンでもあります。 キャッシュは、負荷が減少したため、クライアント側のパフォーマンスが向上し、サーバーのスケーラビリティの範囲が向上します。
RESTでは、キャッシュは適用可能な場合にリソースに適用され、これらのリソースはキャッシュ可能であると宣言する必要があります。 キャッシュは、サーバー側またはクライアント側で実装できます。
レイヤードシステム
RESTでは、Apiをサーバー Aにデプロイし、データをサーバー Bに保存し、サーバー Cで要求を認証するレイヤードシステムアーキテクチャを使用できます。 クライアントは、通常、エンドサーバーに直接接続されているのか、途中で仲介者に接続されているのかを知ることはできません。
コード-オン-デマンド(オプション)
まあ、この制約はオプションです。 ほとんどの場合、リソースの静的表現をXMLまたはJSON形式で送信します。 しかし、必要なときには、アプリケーションの一部をサポートするためにreturn executable code
を自由に使用できます。 それは許可されています。
上記の制約はすべて、WWW(web)に最も密接に関連していることに注意してください。 RESTful Apiを使用すると、webページに対して行うことと同じことをwebサービスで行うことができます。