RESTful APIとは

最も一般的なAPIのタイプの1つが、RESTです。これはRESTful APIと呼ばれることもあります。RESTまたはRESTful APIには、多くのメリットがあり、これらは、既存のプロトコルを活用するように設計されています。REST(Representational State Transfer)は、ほぼあらゆるプロトコル上で使用でき、Web APIに使用される場合は、通常、HTTPを活用します。そのため、REST APIの作成時には、ソフトウェアやライブラリを追加でインストールする必要がありません。

REST APIの主な長所の1つは、優れた柔軟性を提供することです。データがリソースやメソッドに結び付けられていないため、RESTが複数のタイプの呼び出しに対応し、さまざまなデータ形式で返すことができるだけでなく、ハイパーメディアを適切に実装して構造的に変更することもできます。この柔軟性により、企業のニーズだけでなく、多様な顧客のニーズも満たすAPIを構築することができます。 

RESTful APIがニーズに対して最適なAPIのタイプかどうかを検討する際に、考慮すべき制約が6つあります。

  • クライアント/サーバー:この制約は、「クライアントとサーバーは互いに分離し、それぞれ個別に進化すべきである」という概念にもとづいています。
  • ステートレス:REST APIはステートレスです。これは、呼び出しがそれぞれ独立して実行され、各呼び出しには、その呼び出しを正常に完了するために必要なすべてのデータが含まれていることを意味します。
  • キャッシュ:ステートレスなAPIは、大量の着信および発信呼び出しを処理することでリクエストのオーバーヘッドを増やすことができるため、REST APIはキャッシュ可能なデータの格納を促進するように設計する必要があります。
  • 統一インタフェース:サーバーからクライアントを切り離す際に重要なのが、統一インタフェースです。統一インタフェースを持たせることで、アプリケーションのサービス、モデル、およびアクションをAPIレイヤー自体に密接に結合させることなく、アプリケーションの独立した進化が可能になります。
  • レイヤー化されたシステム:REST APIでは、アーキテクチャの各レイヤーが連携して階層を構築し、よりスケーラブルでモジュール化されたアプリケーションを作成します。
  • コードオンデマンド:コードオンデマンドは、コードやアプレットをAPI経由で送信し、アプリケーション内で使用できるようにします。

SOAPと違い、RESTはXMLに制約されず、クライアントの要求に応じてXML、JSON、YAMLをはじめとするさまざまな形式で返すことができます。また、RPCと違い、ユーザーがプロシージャ名や特定のパラメーターを、特定の順序で知る必要もありません。

RESTful APIの短所の1つとして、RESTでは、セッション内などで状態を維持できなくなり、新しい開発者が使用するのがより難しくなることがあります。

また、APIを構築する前に、REST APIがRESTfulになる条件と、これらの制約が存在する理由を理解しておくことも重要です。