APIの仕組みは?

APIは、アプリケーションがAPI呼び出しを送受信することで情報を交換することを可能にします。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • APIの仕組みを説明する
  • APIエンドポイントとAPIクライアントを区別する
  • さまざまなAPIプロトコルを比較する

関連コンテンツ


さらに詳しく知りたいとお考えですか?

是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

記事のリンクをコピーする

APIの仕組みは?

アプリケーション・プログラミング・インターフェース(API)を使用することで、ソフトウェア・プログラムはAPI呼び出し(情報リクエスト)の送受信によって相互に通信できるようになります。これらのリクエストは、APIクライアントによって開始され、APIエンドポイントによって受理されます。

API間の情報のやりとりを可能にするために、開発者は、APIが受け入れ可能なリクエストの種類、設計上サポート可能なユースケース、その他サードパーティが従う必要がある条件(プロトコル、スキーマ、セキュリティ要件など)を記述したAPIドキュメントを提供する必要があります。

API呼び出しを使用することで、開発者は個々のアプリケーションごとに機能を書き換えることなく、API経由で機能を共有することができます。これがなければ、開発者は複数のアプリケーション間で機能を簡単に複製したり、他のアプリケーション、サービス、プロバイダーにデータを要求することができなくなります。

APIとは?

APIとは、ソフトウェアプログラムがデータや機能を共有するためのインターフェースのことです。この通信方式は、最新のほとんどのWebアプリケーションの機能の強化に役立っています。

例えば、アリスがクラシック音楽のプレイリストをリスナーの気分に合わせてカスタマイズするアプリケーションを開発したとします。プレイリストを作成するために何千もの楽曲を手入力する代わりに、外部の音楽リポジトリに接続するAPIを使用することで、時間、コスト、開発の課題を軽減することができます。

APIのユースケースはほぼ無限大です。クラウドサービスとの接続、データベースへの問い合わせ、モバイルアプリケーションの自動更新、複数のデバイスへのコンテンツストリーミング、フライトの価格やフードデリバリーのオプションの集計など、さまざまな機能を実現します。

APIクライアントとは?

APIクライアントは、「ユーザー」と呼ばれることもあり、API呼び出しを開始するソフトウェアのことです。

APIクライアントは、APIエンドポイントと対話する前に、そのIDを確認する必要があります。これにより、攻撃者がAPIを悪用して分散サービス妨害(DDoS)攻撃、その他の悪意のある行為を行うことを防ぐことができます。

認証は通常、ユニークな文字列(APIキー)、ユーザー名とパスワードの組み合わせ、 OAuthトークンmutual TLSの4つの方法のいずれかを使用して行われます。強力な認証方法を使用することは、開発者がAPIを攻撃から保護する方法の1つです。(APIセキュリティの詳細についてはこちらをご覧ください)。

APIエンドポイントとは?

APIエンドポイントは、API呼び出しを受け付け、要求された情報を返します。

APIクライアントもAPIエンドポイントも、個別のハードウェアデバイスではなく、サーバーにホストされたソフトウェアプログラムを指します。APIサーバーは複数のエンドポイントをホストすることができ、それぞれのエンドポイントには、APIクライアントが位置を特定できるような統一資源識別子(URI)が割り当てられています。多くの場合、このURIは、インターネット上の場所(Webサイトなど)を指す統一資源位置指定子(URL)です。

APIスキーマとは?

APIスキーマとは、APIリクエストが有効とみなされるために満たすべき仕様を定義したメタデータのことです。この仕様には、対象となるエンドポイントやHTTPメソッドなど、開発者が設定する要件が詳細に含まれる場合があります。

クライアントから送信されたAPI呼び出しは、スキーマに記載された条件を満たしている必要があります。条件を満たしている場合にのみ、APIエンドポイントは要求された情報を返すことができます。これを踏まえて、ボブがパーティーを企画している場合について考えてみましょう。招待状には、「黄色いヒナギクを持参したゲストにのみ、パーティー終了後にお礼のカードをお渡しします」と明記しています。しかし、キャロルが赤いバラを持参することにした場合、パーティー終了後のお礼のカードは受け取れません。

同様に、APIスキーマで設定された条件を満たさないAPI呼び出しは、レスポンスを受け取ることができません。

APIとは?

APIそのものと同様に、API呼び出しはAPIドキュメントに記載された仕様によって異なります。ですが、一般的にAPI呼び出しは、3つの基本的な手順に従っています:

  1. APIクライアントがAPI呼び出し(情報リクエスト)を開始する。リクエストは、APIクライアントによってAPIエンドポイントが提供するプロトコルやスキーマに従ってフォーマットされたものである必要があります。
  2. APIエンドポイントがリクエストを受信する。次に、APIエンドポイントがAPIクライアントを認証し、APIスキーマを検証します。これにより、a) 確認された発信元からの呼び出しであること、b) リクエストの条件が満たされていること、を確認することができます。
  3. APIエンドポイントが要求された情報をAPIクライアントに返す。APIスキーマは、クライアントに返すことができるレスポンスのタイプを決定します。

API呼び出しについてのより詳しい説明は、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は搾取や悪用される可能性があります。一般的なAPI攻撃には、以下のようなものがあります:

  • 認証ベースの攻撃:認証は、API呼び出しが正当な送信元から送受信されることを保証するための重要な部分です。しかし、攻撃者は、認証トークンを傍受したり、APIキーを盗んだり、その他の手口で機密情報を取得することで、これらの対策を回避して攻撃を実行することができます。
  • 脆弱性の悪用:APIの脆弱性(OWASP API Security Top 10に掲載されているオブジェクトレベルの認可の不備、ユーザー認証の不備、データの過剰な公開など)とは、攻撃者が許可なくアクセスできる可能性があるAPIの欠陥のことを指します。これらの欠陥を悪用することで、攻撃者はデータを漏えいさせたり、APIを使用してより複雑な攻撃を仕掛けることができます。
  • DDoS攻撃:攻撃者は、APIが提供するサービスを中断(または完全に停止)させようと、大量のトラフィックを殺到させることがあります。

Cloudflare API Gatewayは、強力な認証、ペイロード内の機密データのスキャン、APIスキーマの検証、APIの不正使用の検出と防止機能を提供してこれらの攻撃の軽減することができます。詳細は、Cloudflare API Gatewayをご覧ください。