APIは、アプリケーションがAPI呼び出しを送受信することで情報を交換することを可能にします。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
アプリケーション・プログラミング・インターフェース(API)を使用することで、ソフトウェア・プログラムはAPI呼び出し(情報リクエスト)の送受信によって相互に通信できるようになります。これらのリクエストは、APIクライアントによって開始され、APIエンドポイントによって受理されます。
API間の情報のやりとりを可能にするために、開発者は、APIが受け入れ可能なリクエストの種類、設計上サポート可能なユースケース、その他サードパーティが従う必要がある条件(プロトコル、スキーマ、セキュリティ要件など)を記述したAPIドキュメントを提供する必要があります。
API呼び出しを使用することで、開発者は個々のアプリケーションごとに機能を書き換えることなく、API経由で機能を共有することができます。これがなければ、開発者は複数のアプリケーション間で機能を簡単に複製したり、他のアプリケーション、サービス、プロバイダーにデータを要求することができなくなります。
APIとは、ソフトウェアプログラムがデータや機能を共有するためのインターフェースのことです。この通信方式は、最新のほとんどのWebアプリケーションの機能の強化に役立っています。
例えば、アリスがクラシック音楽のプレイリストをリスナーの気分に合わせてカスタマイズするアプリケーションを開発したとします。プレイリストを作成するために何千もの楽曲を手入力する代わりに、外部の音楽リポジトリに接続するAPIを使用することで、時間、コスト、開発の課題を軽減することができます。
APIのユースケースはほぼ無限大です。クラウドサービスとの接続、データベースへの問い合わせ、モバイルアプリケーションの自動更新、複数のデバイスへのコンテンツストリーミング、フライトの価格やフードデリバリーのオプションの集計など、さまざまな機能を実現します。
APIクライアントは、「ユーザー」と呼ばれることもあり、API呼び出しを開始するソフトウェアのことです。
APIクライアントは、APIエンドポイントと対話する前に、そのIDを確認する必要があります。これにより、攻撃者がAPIを悪用して分散サービス妨害(DDoS)攻撃、その他の悪意のある行為を行うことを防ぐことができます。
認証は通常、ユニークな文字列(APIキー)、ユーザー名とパスワードの組み合わせ、OAuthトークン、mutual TLSの4つの方法のいずれかを使用して行われます。強力な認証方法を使用することは、開発者がAPIを攻撃から保護する方法の1つです。(APIセキュリティの詳細についてはこちらをご覧ください)。
APIエンドポイントは、API呼び出しを受け付け、要求された情報を返します。
APIクライアントもAPIエンドポイントも、個別のハードウェアデバイスではなく、サーバーにホストされたソフトウェアプログラムを指します。APIサーバーは複数のエンドポイントをホストすることができ、それぞれのエンドポイントには、APIクライアントが位置を特定できるような統一資源識別子(URI)が割り当てられています。多くの場合、このURIは、インターネット上の場所(Webサイトなど)を指す統一資源位置指定子(URL)です。
APIスキーマとは、APIリクエストが有効とみなされるために満たすべき仕様を定義したメタデータのことです。この仕様には、対象となるエンドポイントやHTTPメソッドなど、開発者が設定する要件が詳細に含まれる場合があります。
クライアントから送信されたAPI呼び出しは、スキーマに記載された条件を満たしている必要があります。条件を満たしている場合にのみ、APIエンドポイントは要求された情報を返すことができます。これを踏まえて、ボブがパーティーを企画している場合について考えてみましょう。招待状には、「黄色いヒナギクを持参したゲストにのみ、パーティー終了後にお礼のカードをお渡しします」と明記しています。しかし、キャロルが赤いバラを持参することにした場合、パーティー終了後のお礼のカードは受け取れません。
同様に、APIスキーマで設定された条件を満たさないAPI呼び出しは、レスポンスを受け取ることができません。
APIそのものと同様に、API呼び出しはAPIドキュメントに記載された仕様によって異なります。ですが、一般的にAPI呼び出しは、3つの基本的な手順に従っています:
API呼び出しについてのより詳しい説明は、API呼び出しとは?をご覧ください。
APIは、複数のプロトコルに対応しています。プロトコルとはネットワーク上で通信するための方法であり、リクエストとレスポンスをどのようにフォーマットするかをAPIに指示するものです。使用するAPIプロトコルの種類は、そのAPIの開発目的、提供するユースケース、およびAPIが持つ制約に依存します。
APIプロトコルとしては、Simple Object Access Protocol(SOAP)とRemote Procedural Call(RPC)の2つが一般的です。これらのプロトコルとよく比較されるのが、Representational State Transfer(REST)というソフトウェアアーキテクチャです。
SOAP:異なるOSや異なるアーキテクチャを使用するAPI間でAPI呼び出しを送受信するための標準化された方法を提供します。また、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、簡易メール転送プロトコル(SMTP)、その他のアプリケーション層プロトコルにも対応しています。SOAPでは、拡張可能なマークアップ言語(XML)形式でのみAPIクライアントにデータを返すことができます。
RPC:API間で通信するための最もシンプルで古い方法の1つです。RPCは、 遠隔手続き呼び出しを開始することで機能します。この中で、クライアントはリモートサーバーに関数を要求します。RPCとSOAP/RESTの主な違いは、RPCが特定のアクション(または機能)の実行をサポートするのに対し、SOAP/RESTはリソース(またはデータ)を取得するために使用されることです。
REST:RESTアーキテクチャを指し、API呼び出しのフォーマットを部分的に規定しています。簡単に言うと、RESTはクライアントがサーバーにリソースをリクエストし、サーバーはその情報を現在の状態でクライアントに返すことができる仕組みです。REST APIは、リクエストとレスポンスのフォーマットにHTTPプロトコルを使用することが多いですが、FTP、SMTPなどとも互換性があります。XML、JavaScriptオブジェクト表記法(JSON)、ハイパーテキストマークアップ言語(HTML)など、複数のフォーマットでAPIクライアントにデータを返すことができます。
ネットワークに接続されたあらゆるものと同様に、APIは搾取や悪用される可能性があります。一般的なAPI攻撃には、以下のようなものがあります:
Cloudflare API Gatewayは、強力な認証、ペイロード内の機密データのスキャン、APIスキーマの検証、APIの不正使用の検出と防止機能を提供してこれらの攻撃の軽減することができます。詳細は、Cloudflare API Gatewayをご覧ください。
利用開始
Webアプリケーションセキュリティについて
一般的な脅威
VPNリソース
セキュリティ用語集