APIエンドポイントは、アプリケーション・プログラミング・インターフェース(API)がサーバー上のリソースに対するAPI呼び出し(APIリクエストとも呼ばれます)を受信するデジタル空間の場所です。APIエンドポイントはAPIのコンポーネントであり、多くの場合、URLまたはユニフォーム・リソース・ロケーターの形式になっています。
APIは、ソフトウェアアプリケーションがデータや機能、特徴を交換するために相互に通信する仲介役です。これは、API クライアント(リクエストを行うソフトウェア)がサーバーと通信してデータや関数にアクセスする方法を定義する一連のプロトコルとルールです。APIを使用することで、開発者は既存のデータとサービスを利用できます。アプリケーション所有者は、それらと同じデータやサービスを共有したり、販売したりできます。
エンドポイントは電話番号と少し似ています。ユーザーが特定の個人や企業に連絡するために電話番号をダイヤルするのと同じように、APIクライアント(API 呼び出しを行うソフトウェア)は、特定のリソースに到達するためのエンドポイントURLを提供します。エンドポイントURLは、APIサーバー上のリソースの場所を提供し、APIクライアントとリクエストしているリソースとの接続に役立ちます。基本的には、サーバーに「必要なリソースはここにあります」と伝えます。
APIエンドポイントは、APIクライアントがAPIから様々なデータをリクエストすることを可能にし、ソーシャルメディアソフトウェアアプリケーションからのリアルタイム更新、音声や動画の埋め込み、ニュース記事の取得、新規投稿の作成など、様々なユースケースがあります。
適切にフォーマットされた安全なAPIエンドポイントは、APIの仕組みにおいて非常に重要です。APIは、新しいアプリケーションとサービスの設計と開発(開発者が既存の機能やサービスを基に構築できるため)、および既存のアプリケーションの統合と管理を簡素化します。また、コラボレーションの向上、イノベーションの加速、アジリティー、拡張性、セキュリティーの向上など、開発者や組織全体に大きなメリットをもたらします。APIエンドポイントは、このような統合を可能にするリソース交換を可能にします。
APIが期待どおりに機能するためには、APIエンドポイントが正確、直感的かつ検出可能で、認証されている必要があります。そうでない場合、クライアントとサーバー間の通信が中断され、機能とそれに対するユーザーの満足度が低下してしまう可能性があります。簡単に言うと、APIエンドポイントにより、APIクライアントは要求されたリソースと関数を正常に見つけて、アクセスすることができます。
APIエンドポイントは通常、APIのドキュメントにあります。開発者は、APIが受け入れるリクエストの種類やリクエストのフォーマットをどのように設定する必要があるかなど、API情報をここに入力します。このドキュメントには、利用可能なすべてのAPIエンドポイントのリストとそれらの機能の簡単な説明も含めることが理想的です。
REST API(Webアプリケーションでよく使用されるソフトウェア・アーキテクチャー・スタイル)のコンテキストでは、プロセスは次のようになります。
このプロセスは、APIクライアントがリソース・リクエスト(API呼び出し)を対応するAPIエンドポイントに送信することで開始されます。エンドポイントには、POST、GET、PUT、PATCH、DELETEといったHTTPリクエスト・メソッドを使用してアクセスします。これらのメソッドは、クライアントが指定された参考情報に対して実行しようとしているアクションを示します。
たとえば、クライアントが仮想的なデータベースOlymlyfats.comから特定の年のオリンピック・メダルのリストをを取得したいとします。GETリクエストは、次のエンドポイントURLに送信されます:
https://api.olympicfacts.com/v1/{year}
このリクエストでは、国別のオリンピック・メダル総数のリストが返されます。(仮定のエンドポイントのv1は、APIのバージョン管理で一般的に行われているAPIのバージョンを示しています。)クライアントが特定の年の特定の国の合計を求めている場合は、ベースURLに識別子が追加されます: https://api.olympicfacts.com/v1/year/{id}
この例では、識別子{id}は、クライアントがどの国に関する情報を受信しようとしているかを示すために使用されます。
さらに、リクエストには次のものが含まれます。
サーバーがリクエストを認証し、入力を検証すると、要求されたデータを取得し、応答をクライアントに返します。多くの組織は、APIゲートウェイを使用してこれらの機能を実行し、APIトラフィック・フローを管理しています。
REST API(RESTful APIまたはRESTful Web APIとも呼ばれます)は、Representational State Transfer(REST)アーキテクチャー・スタイルの設計原則に準拠したAPIです。1 GraphQLは、クライアントがAPIとやり取りを行う方法を指定するオープンソースのクエリ言語およびサーバー側ランタイムです。2
GraphQLとRESTはどちらもリソース。ベースのテクノロジーであり、同様のデータ形式(JSONやXMLなど)をサポートし、クライアントがHTTPメソッドを使用してサーバーからデータを要求できるようにします。ただし、リクエスト要件やデータ取得などの違いがあります。エンドポイントに関連する重要な違いに焦点を当てます。
REST APIは複数のエンドポイントを使用し、リソースごとに異なるエンドポイントを持ちます。クライアントがリソースを要求すると、クライアントがデータの小さなサブセットしか必要としない場合でも、サーバーはリソースに関連付けられたすべてのデータを返します。これをオーバー・フェッチと呼びます。クライアントが複数のリソースにデータを分散させる必要がある場合、それぞれのリソースに対して個別のAPI呼び出しを行い、必要なデータをコンパイルする必要があります。
GraphQLは、単一のエンドポイントを使用してデータ・モデルを公開し、クライアントが1行または数行でAPIリクエストを作成し、必要なものを正確に指定できる構文を使用します。GraphQLクエリは、リソース間の参照を追跡し、単一のリクエストで複雑なデータ取得タスクを実行できます。これにより、アンダー・フェッチやオーバー・フェッチの問題が発生し、複数のAPI呼び出しを行う必要がなくなります。
REST APIもGraphQL APIのどちらが本質的に優れているというわけではありません。異なるタスクに適した異なるツールです。3
優れたAPI設計のカギとなるは、テスト・フェーズです。今日のアプリケーションは、多くの場合、APIを使用して他のソフトウェアの機能を統合したり、マイクロサービス・アーキテクチャー(異なるサービス間の通信にAPIを使用する)を使用して構築されます。信頼性を確保するには、APIエンドポイントのテストが不可欠です。
APIには手動テスト・オプションと自動化を使用したテスト・オプションがあり、企業が使用できるテスト・ツールとプラットフォーム(オープンソースと独自仕様の両方)も多数あります。
手動のAPIエンドポイント・テストは時間がかかり、効率が悪くなる可能性がありますが、より正確で、特定のユースケースに合わせてカスタマイズすることもできます。機能テストとは、アプリケーションからリクエストを送信して、正しい応答が得られることを確認することです。ソーシャルメディアの例で言えば、特定のユーザーによる新しい投稿のリクエストを送信し、返された投稿が本当に正しいことを確認することです。
その他の手動テストには、次のものがあります。
API管理プラットフォームを通じて実行される自動テストには、いくつかの利点があります。
一般的に、それぞれの応答は、フォーマット、返されるデータ、ステータスコードの点で、意図されたレスポンスを返すべきです。
APIエンドポイントは、内部および外部のアプリケーションとシステムがデータにアクセスして統合する方法を提供するため、攻撃者にとっては潜在的な侵入口となります。分散型サービス妨害(DDoS)攻撃は、正当なリクエストを膨大に送信することでサーバーを飽和させる攻撃です。他の攻撃では、APIエンドポイントを使用して、クライアントが受信できる情報よりも多くの情報を抽出したり、APIエンドポイントを使用してマルウェアや悪意のあるコードをインストールさせようとする可能性があります。
組織がAPIエンドポイントのセキュリティーと全体的なAPIセキュリティーを維持するには、次のような方法があります。
HTTPS(HTTPのよりセキュアなバージョン)は、トランスポート層セキュリティー(TLS)を使用して、クライアントとサーバー間の通信を暗号化します。これにより、データ転送のセキュリティーが向上します。
レート制限とは、リクエストの最大量を設定する取り組みを指す一般的な用語で、DDoS攻撃を防ぎ、システムの安定性を維持するのに役立ちます。異なるコントロールを異なるAPIエンドポイントに適用することもできます。
攻撃が特定の場所から発生する場合、ジオフィルタリングを使用して、それらの場所からのアクセスをブロックまたは制限することができます。
APIゲートウェイは、クライアント・デバイスとサーバー間の仲介として機能するソフトウェア層です。すべてのAPI呼び出しを受け入れ、要求されたサービスにルーティングする中心的なポイントです。これらのセキュリティー機能の多くは(API監視および分析機能に加えて)、APIゲートウェイ内に実装できます。また、ゲートウェイを使用すると、API環境全体でセキュリティー・プロトコルの一貫した適用が促進されます。
APIリソースは、APIが提供するデータセットまたはオブジェクトです。リソースは問題のAPIによって異なりますが、コンテンツの種類にはテキスト、テーブル、ソース・ファイル、音声、動画、画像、ユーザー、製品などがあります。
APIエンドポイントは、サーバー上のこれらのリソースの特定の場所です。これは、APIクライアントとサーバー間の接点であり、API呼び出しが行われます。
店舗のビジネス・リスティングについて考えてみましょう。このリストは、店舗の場所(エンドポイント)と、営業時間や商品在庫などの情報を要求するための連絡方法(リソース)を提供します。
APIキーは、API呼び出しを行うクライアントの身元と真正性を検証および認証するための方法です。APIキーは、APIプロバイダーによって登録されたAPIユーザーに発行される、ランダムに生成された文字列です。クライアント・デバイスがAPI呼び出しを行うとき、APIキーが含まれます。APIゲートウェイまたはAPIサーバーは、APIリクエストを実行する前に、まずキーを確認してクライアントのIDを検証します。キーが許可されたキーのいずれとも一致しない場合、サーバーはAPI呼び出しを拒否し、拒否メッセージを発行します。
組織はAPIキーを使用して、個々のクライアントやプロジェクトの認証、トラフィック。パターンの追跡と特定、不要な使用のブロックなどを行っています。
APIエンドポイントは、前述したように、APIクライアントがAPIから特定のデータまたは関数に対するリクエストを送信する、クライアントとサーバーの間のインターフェースとして機能します。APIキーを使用することで、API環境とAPI連携全体のセキュリティーを向上できます。
AIを活用した自動化機能で、API、アプリケーション、イベント、ファイル、B2B/EDIにおいて俊敏性を促進します。
アプリケーションとシステムを接続して重要なデータに迅速かつ安全にアクセスする IBM 統合ソリューションにより、ビジネスの可能性を最大限に引き出します。
IBM Cloudコンサルティング・サービスで新しい機能を解き放ち、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略と専門家のパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。
1 “What is a REST API?”, IBM.com
2 “What is GraphQL?”, Chrystal China, Michael Goodwin, 8 December 2023
3 “GraphQL vs. REST API: What’s the difference?”, Chrystal China, 29 March 2024