REST API

menu icon

REST API

REST APIは、柔軟かつ軽量にアプリケーションを統合できるため、マイクロサービス・アーキテクチャーでコンポーネントを接続するための最も幅広く活用できる方法として注目されています。

REST APIとは

API(アプリケーション・プログラミング・インターフェース)は、アプリケーションとデバイスの相互接続と通信の方法を定義する一連のルールです。 REST APIは、REST(representational state transfer)アーキテクチャー・スタイルの設計原則に準拠するAPIです。 このため、REST APIは RESTful APIと呼ばれることもあります

2000年にコンピューター科学者のロイ・フィールディング博士が 博士論文で最初に定義したRESTは、従来と比較して高い柔軟性と自由度を提供します。 しかし、この高い柔軟性は、REST APIがマイクロサービス・アーキテクチャーでコンポーネントとアプリケーションを接続するための活用しやすい方法として注目されている理由の一つに過ぎません。

RESTの設計原則

本来、APIは、アプリケーションやサービスを別のアプリケーションやサービス内のリソースにアクセスできるようにするためのメカニズムです。 アクセスを行うアプリケーションやサービスはクライアントと呼ばれ、リソースを含むアプリケーションやサービスはサーバーと呼ばれます。

SOAPやXML-RPCなどの一部のAPIは、開発者に厳格なフレームワークを要求します。 しかし、REST APIは、ほぼすべてのプログラミング言語で開発できます。また、さまざまなデータ形式をサポートしています。 唯一の要件は、次の6つのRESTの設計原則 (アーキテクチャー上の制約とも呼ばれます)への準拠です。

  1. 統一されたインターフェース。 同じリソースに対するすべてのAPIリクエストは、リクエストの送信元に関係なく、同じように見える必要があります。 REST APIは、ユーザーの名前や電子メール・アドレスなど、同じデータが1つのURI(Uniform Resource Identifier)だけに属するようにします。 リソースは大きすぎてはいけませんが、クライアントが必要とする可能性のあるすべての情報が含まれている必要があります。
  2. クライアントとサーバーの分離。 REST APIの設計では、クライアント・アプリケーションとサーバー・アプリケーションは互いに完全に独立している必要があります。 クライアント・アプリケーションは要求するリソースのURIのみを知っていればよく、他の方法でサーバー・アプリケーションと対話することはありません。 同じく、サーバー・アプリケーションは要求されたデータをHTTPを介して渡すのみで、クライアント・アプリケーションを変更することはありません。
  3. ステートレス性。 REST APIはステートレスです。つまり、各リクエストには、その処理に必要なすべての情報を含める必要があります。 言い換えれば、サーバー側のセッションは不要ということです。 サーバー・アプリケーションは、クライアント・リクエストに関連するデータの保存を許可されていません。
  4. キャッシュ可能性。 キャッシュが許可されている場合は、クライアント側またはサーバー側でリソースのキャッシュが可能である必要があります。 サーバーの応答には、配信するリソースのキャッシュが許可されているかどうかに関する情報も含まれている必要があります。 これにより、サーバー側のスケーラビリティーが向上すると同時に、クライアント側のパフォーマンスも改善します。
  5. 階層化されたシステム・アーキテクチャー。 REST APIでは、呼び出しと応答は異なる階層を通過します。 これまでの経験から、クライアント・アプリケーションとサーバー・アプリケーションが互いに直接接続していると想定してしまうのは誤りです。 通信ループには、さまざまな中間システムが存在する可能性があります。 REST APIでは、クライアントとサーバーのいずれも、エンド・アプリケーションと中間システムのどちらと通信しているのかを判別できないように設計する必要があります。
  6. コードオンデマンド(オプション)。 REST APIは、通常、静的リソースを送信しますが、場合によっては、応答に実行可能コード(Javaアプレットなど)を含めることもできます。 その場合、コードは必ずオンデマンドで実行する必要があります。

REST APIの仕組み

REST APIは、HTTPリクエストを介して通信し、リソース内のレコードの作成、読み取り、更新、削除(CRUDとも呼ばれます)などの標準的なデータベース機能を実行します。 例えば、REST APIは、GETリクエストを使用してレコードを取得し、POSTリクエストを使用してレコードを作成し、PUTリクエストを使用してレコードを更新し、DELETEリクエストを使用してレコードを削除します。 API呼び出しでは、すべてのHTTPメソッドを使用できます。 適切に設計されたREST APIは、Webサイトの提供したページがHTTPを介してWebブラウザーに表示されることに似ています。

特定の時点(タイムスタンプ)でのリソースの状態は、リソース表現と呼ばれます。 この情報は、JavaScript Object Notation(JSON)、HTML、XLT、Python、PHP、プレーンテキストなど、ほぼすべての形式でクライアントに配信できます。 特にJSONは、人間と機械の両方で読み取り可能であり、プログラミング言語に依存しないため、広く使用されています。

リクエスト・ヘッダーとパラメーターは、メタデータ、認証、URI、キャッシング、Cookieなどの重要な識別子情報が含まれているため、REST API呼び出しでも重要です。 リクエスト・ヘッダーとレスポンス・ヘッダーは、従来のHTTPステータス・コードとともに、適切に設計されたREST API内で使われます。

REST APIのベスト・プラクティス

高い柔軟性は、REST API設計の大きなメリットです。しかし、その柔軟さゆえに、破損しているAPIや低パフォーマンスのAPIの設計も簡単に行えてしまいます。 そのため、専門の開発者は、REST API仕様のベスト・プラクティスを共有しています。

OpenAPI仕様(OAS)は、APIを記述するためのインターフェースを確立します。この仕様を使用することで、すべての開発者またはアプリケーションが、APIを検出してそのパラメーターと機能(使用可能なエンドポイント、各エンドポイントで許可される操作、操作パラメーター、認証方法、その他の情報) を完全に理解できるようになります。 最新バージョンのOAS3(IBMの外部へのリンク)には、実践的なツール(さまざまなプログラミング言語でAPIクライアントとサーバー・スタブを作成するためのOpenAPIジェネレーターなど)が含まれています。

REST APIの保護の面では、パスワードを保護するためにハッシュ・アルゴリズムを使用する、安全なデータ送信のためにHTTPSを使用するなど、業界のベスト・プラクティスも重要です。 OAuth 2.0(IBMの外部へのリンク)のような許可フレームワークは、サードパーティーのアプリケーションの特権を制限するために役立ちます。 また、HTTPヘッダーのタイムスタンプを使用して、特定の期間の経過後に到着したリクエストをAPIで拒否するようにすることもできます。 承認されたクライアントのみがAPIにアクセスできるようにするには、ほかにもパラメーター検証を使用する方法とJSON Webトークンを使用する方法があります。

REST APIとIBM Cloud

REST APIはその利点から、ソフトウェア開発プロセスにおいて重要な位置を占め続けることでしょう。より良いカスタマー・エクスペリエンスとより多くのアプリケーションへの要求が事業とITの運用を左右する中ではこのことは特に当てはまります。

これからの需要に対応するために、より大規模な自動化への移行をお勧めします。 理想的には、成功度を測定できる小規模なプロジェクトで開始してから、別のプロセスや組織部門に合わせてスケーリングと最適化を行います。 IBMと協業することで、事前構築されたワークフローを含む、AIを活用した自動化機能を利用できるようになります。これにより、あらゆるプロセスをよりインテリジェントなものにすることで、イノベーションを加速させます。

IBMのツールとサービスを使用することにより、アプリケーションのモダナイゼーションを進めていくなかで直面する、APIを取り巻く重要な問題(セキュリティー、ガバナンス、自動化など)への対応が可能になります。

詳細情報はこちら:

  • IBM API Connectの中核となる機能に基づいて構築された、IBM Cloud Pak for Integrationについてご確認ください。この製品を使用することで、お客様の組織のアーキテクトと管理者は、APIライフサイクルを完全に制御できるようになります。
  • IBM Cloud API Docsをご覧ください。ここには、IBM CloudでサポートされているAPI関連のドキュメントが含まれています。
  • 統合成熟度評価を実施してください。お客様の組織の重要な側面における統合成熟度が明示され、次のレベルに到達するために実行可能なアクションを見つけることができます。
  • アジャイル統合のガイドをダウンロードしてください。IBMのソリューション統合のアプローチのメリットをご確認いただけます。このコンテナベースの分散型アプローチは、マイクロサービスに合わせたものとなっています。

IBM Cloudアカウントを今すぐ始めましょう。