【図解】APIエンドポイントとは?URLの読み方とバージョン・環境の分け方を初心者向けに解説

以前、REST APIの基本を記事にしました。API の資料を読んでいると、そのあとすぐに出てくるのが「エンドポイント」という言葉です。この記事では、Microsoft Graph・Azure・GitHub の公式ドキュメントで確かめながら、エンドポイントの URL の読み方と、バージョンや環境の違いが URL のどこに表れるかを図にしました。

この記事でわかること
  1. APIエンドポイントが何を指す言葉か
  2. エンドポイントの URL の読み方と、バージョン・環境の表し方
  3. 公開用と社内用の違いと、エンドポイントを扱うときの注意点

APIエンドポイントとは

APIエンドポイントは、プログラムが API を呼び出すときに、リクエストを送る先の URL です。役所にたとえると、建物の住所がサービス全体の入口にあたり、その中に「住民票」「税金」のような窓口が並んでいる、というイメージです。

この言葉は、資料によって指す範囲が少し違います。Microsoft Graph の資料では、https://graph.microsoft.com を「Microsoft Graph API のエンドポイント」と呼んでいます。一方で、/users や /groups のように、操作ごとの URL を1つずつ「エンドポイント」と数える資料も多くあります。

APIを提供するサービス(例:Microsoft Graph)リクエストクライアント(アプリ・curl)ベースURL(サービスの入口)https://graph.microsoft.com/v1.0/usersユーザー/groupsグループ/me/messages自分のメールエンドポイント(個々の窓口)
図1 サービスの入口(ベースURL)と、個々のエンドポイント
呼び方指す範囲例(Microsoft Graph)
サービスのエンドポイントサービス全体の入口https://graph.microsoft.com
ベースURL入口にバージョンまでを足したもの。SDK の設定などで使うhttps://graph.microsoft.com/v1.0
個々のエンドポイント1つひとつの操作の URLhttps://graph.microsoft.com/v1.0/users

資料を読むときは、どちらの意味で使っているかを前後の文から判断します。この記事では、区別が必要なところは「ベースURL」と「個々のエンドポイント」と書き分けます。

同じURLでも、メソッドが違えば別の操作

個々のエンドポイントは、URL だけでなく HTTP メソッドと組み合わせて1つの操作になります。Microsoft Graph では、同じ /users に GET を送るとユーザーの一覧が返り、POST を送ると新しいユーザーを作ります。

例:Microsoft Graph のユーザー操作(公式ドキュメントのリクエスト例)

GET https://graph.microsoft.com/v1.0/users
POST https://graph.microsoft.com/v1.0/users

API の仕様を書くための形式である OpenAPI でも、パスごとに get や post といった操作を並べて書きます。API の資料で「GET /users」のようにメソッドとパスを並べて書いてあるのは、この組み合わせで1つの操作を表しているからです。HTTP メソッドそのものは、REST APIの記事で説明しています。

エンドポイントのURLを部品に分けて読む

エンドポイントの URL は、部品に分けると読みやすくなります。URL の部品の分け方は RFC 3986 で決められていて、API の URL もこの形に従っています。

ベースURLエンドポイントごとに変わる部分https://スキーム通信のしかたgraph.microsoft.comホストどのサーバか/v1.0バージョンどの版か/users/{id}パス何を(リソース)?$select=mailクエリ条件・オプションポート番号は https の既定値(443)なので省略されている
図2 エンドポイントのURLを部品に分ける
部品例意味
スキームhttps通信のしかた。API はほとんどが HTTPS で呼ぶ
ホストgraph.microsoft.comAPI を受け付けるサーバの名前。DNS で IP アドレスに変換される
ポート(省略)https の既定は 443 番。既定のときは書かない
バージョン/v1.0API の版。パスに入れる API と、別の場所に書く API がある
パス/users/{id}操作する対象(リソース)。{id} には実際の ID を入れる
クエリ?$select=mail条件やオプション。? のあとに 名前=値 を & でつなぐ
フラグメント#…ブラウザの側だけで使う部分で、サーバには送られない

パスパラメータとクエリパラメータ

パスの中の {id} のように波かっこで囲まれた部分を、パスパラメータといいます。資料に {id} と書かれていても、送るときは波かっこごと実際の値に置き換えます。クエリパラメータは ? のあとに付ける 名前=値 の組で、結果の絞り込みや、返す項目の指定によく使います。

OpenAPI では、パラメータの置き場所として path(パス)、query(クエリ)、header(ヘッダ)、cookie(Cookie)の4つが決められています。URL には見えないヘッダも、エンドポイントに情報を渡す置き場所の1つです。

大文字と小文字

RFC 3986 では、スキームとホストは大文字と小文字を区別せず、パスやクエリなどほかの部品は、スキームに別の決まりがない限り区別するものとして扱います。実際の扱いは API ごとに違い、Microsoft Graph はリソース名やクエリパラメータの大文字小文字を区別しない一方で、ID などの値は区別します。資料に書かれたとおりの綴りで送るのが確実です。

バージョンはどこに書くか

API は、機能を足したり直したりしながら使われ続けます。項目の名前を変えたり必須のパラメータを増やしたりすると、それまで動いていたプログラムが動かなくなります。そこで、こうした変更は新しいバージョンにまとめて出し、古いバージョンもしばらく残します。GitHub は、互換性を壊す変更は新しいバージョンで出すと説明しています。

バージョンを書く場所は、API によって主に次の3つに分かれます。

パスに書くMicrosoft GraphGET https://graph.microsoft.com/v1.0/usersbeta にすると /beta/users のようになるクエリに書くAzure Resource ManagerGET https://management.azure.com/…/resources?api-version=2021-04-01ヘッダに書くGitHub REST APIGET https://api.github.com/zenX-GitHub-Api-Version: 2026-03-10
図3 バージョンの書き場所は API ごとに違う

パスに書く(Microsoft Graph)

Microsoft Graph は、ホストのすぐ後ろに v1.0 か beta を書きます。beta はプレビュー中の API で、予告なく変わることがあるため、Microsoft は本番のシステムで beta に頼らないよう案内しています。

例:Microsoft Graph(公式ドキュメントのリクエスト例)

GET https://graph.microsoft.com/v1.0/me/
GET https://graph.microsoft.com/beta/me/

クエリに書く(Azure Resource Manager)

Azure のリソースを操作する Azure Resource Manager の REST API は、https://management.azure.com/ を使い、リクエストに api-version というクエリパラメータを付けます。値は 2021-04-01 のような日付の形です。

例:リソースグループ内のリソースの一覧(公式ドキュメントのリクエスト例)

GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources?api-version=2021-04-01 HTTP/1.1
Authorization: Bearer <bearer-token>
Host: management.azure.com

この例は、HTTP のリクエストをそのまま書いた形です。1行目にはパスとクエリだけが入り、ホストは Host ヘッダに入ります。ブラウザのアドレス欄に入れる URL とは見え方が違いますが、ホストとパスをつなげると同じ URL になります。

ヘッダに書く(GitHub)

GitHub の REST API は、URL にはバージョンを入れず、X-GitHub-Api-Version というヘッダで指定します。このヘッダを付けないと 2022-11-28 版として扱われ、サポートが終わったバージョンを指定すると 410 Gone が返ります。

例:GitHub の REST API(公式ドキュメントの例)

curl --header "X-GitHub-Api-Version:2026-03-10" https://api.github.com/zen
2026年10月時点

GitHub の資料では、最新のバージョンは 2026-03-10、2022-11-28 のサポート終了日は2028年3月10日と書かれています。サポート中のバージョンは変わっていくので、使う前に資料で確かめてください。

書き場所ごとの違い

書き場所例特徴
パス/v1.0/usersURL を見ればバージョンがわかる。版が変わると URL も変わる
クエリ?api-version=…パスは同じまま、リクエストごとに版を選ぶ
ヘッダX-GitHub-Api-VersionURL は変わらない。URL だけを見ても版はわからない

環境ごとにエンドポイントを分ける

同じ API でも、開発・検証・本番で接続先を分けるのが一般的です。OpenAPI の仕様書にも、servers の欄に開発用・検証用・本番用の URL を並べて書く例が載っています。パスはどれも同じで、違うのはベースURLです。

開発https://dev-api.example.com/v1検証https://stg-api.example.com/v1本番https://api.example.com/v1クライアント(設定でベースURLを選ぶ)どの環境でも /users などのパスは同じ。違うのはベースURLだけ
図4 環境ごとにベースURLだけを切り替える(ホスト名は説明用の例)

プログラムの中に URL を直接書くと、環境を変えるたびに書き換えが必要になり、検証のつもりで本番を呼んでしまう事故にもつながります。ベースURLは設定ファイルや環境変数に置き、環境ごとに値を変えるのが基本です。

クラウドの種類でエンドポイントが変わる例

Microsoft のクラウドには、世界共通のサービスとは別に、米国政府向けや中国向けの「国内クラウド」があります。Microsoft Graph のエンドポイントも、クラウドごとに違うホスト名になっています。

クラウドMicrosoft Graphサインイン(Microsoft Entra ID)
世界共通https://graph.microsoft.comhttps://login.microsoftonline.com
米国政府(GCC High)https://graph.microsoft.ushttps://login.microsoftonline.us
米国政府(DoD)https://dod-graph.microsoft.ushttps://login.microsoftonline.us
中国(21Vianet)https://microsoftgraph.chinacloudapi.cnhttps://login.chinacloudapi.cn

国内クラウド向けに取ったアクセストークンは、世界共通のサービスやほかのクラウドでは使えません。API のホストだけを変えても、トークンを取る先(サインインのエンドポイント)がそろっていなければ認証に失敗します。なお、米国政府向けでも GCC の環境は世界共通のエンドポイントを使います。

公開用のエンドポイントと社内用のエンドポイント

エンドポイントには、インターネットから届く「公開エンドポイント」と、社内ネットワークやクラウドの仮想ネットワークの中からだけ届くものがあります。インターネットに公開する API の前には、リバースプロキシなどを置いて入口を1か所にまとめることが多く、その構成はフォワードプロキシとリバースプロキシの記事で説明しています。

社内ネットワーク(クラウドの仮想ネットワーク)社外の利用者Internet公開エンドポイント公開IPアドレス社内の利用者プライベートエンドポイント(社内IP)同じ名前を社内DNSが社内IPに変換APIサービス同じサービス
図5 公開エンドポイントとプライベートエンドポイント

Azure のプライベートエンドポイントは、仮想ネットワークのプライベート IP アドレスを持つネットワークインターフェースです。Azure Storage などのサービスに、仮想ネットワークの中からプライベート IP でつなぐために使います。サービスを仮想ネットワークの中に持ってくるイメージです。

プライベートエンドポイントでは DNS の設定が大事です。サービスの名前(FQDN)が、仮想ネットワークの中ではプライベート IP に解決されるように、プライベート DNS ゾーンなどで設定します。

注意

プライベートエンドポイントを作っただけでは、公開側の入口は閉じません。Microsoft の資料でも、プライベートエンドポイントはプライベート IP の入口を足すもので、パブリックネットワークからのアクセスを必ず制限するわけではないと説明しています。社内からだけ使わせたい場合は、サービス側で公開アクセスを無効にする設定も合わせて行います。

「エンドポイント」と呼ばれるほかのもの

IT の世界では、「エンドポイント」がほかの意味でも使われます。同じ言葉でも、何を指しているかは文脈で変わります。

言葉指すもの例
APIエンドポイントAPI を呼び出す URLhttps://graph.microsoft.com/v1.0/users
サインインの
エンドポイント
サインインやトークンの発行を受け付ける URL。API と同じく URL を指すhttps://login.microsoftonline.com
エンドポイント
(端末)
ネットワークの端にある PC やサーバ、スマートフォン。EDR の「E」はこの意味EDR の記事
プライベート
エンドポイント
Azure の仮想ネットワークに置く、サービス用のネットワークインターフェース図5

エンドポイントを扱うときの注意点

HTTPS で呼ぶ

API の通信には、認証のための情報や業務のデータが乗ります。Azure の REST API の資料でも、リクエストの URL には HTTPS を使うよう求めています。http:// で始まるエンドポイントは、そのまま使わずに確かめます。

秘密の値を URL に入れない

URL は、ブラウザの履歴や、Web サーバ・プロキシのログなど、いろいろな場所に記録されます。OAuth のアクセストークンの送り方を決めた RFC 6750 も、トークンを URL のクエリに入れる方法はログに残りやすいため、ほかの方法が使えない場合を除いて使うべきではないとしています。トークンや API キーは、Authorization などのヘッダで送ります。

送り方例
避けるGET /resource?access_token=…
使うAuthorization: Bearer …

使っているエンドポイントとバージョンを一覧にしておく

バージョンにはサポート期限があり、期限を過ぎたバージョンは使えなくなります。どのシステムがどのエンドポイントのどのバージョンを呼んでいるかを一覧にしておけば、期限の前に移行の計画を立てられます。

API を提供する側も同じです。古いバージョンや検証用のエンドポイントを公開したままにすると、管理の目が届かない入口が残ります。OpenAPI で仕様書を書いておくと、servers と paths に入口の一覧がまとまるので、棚卸しの土台になります。

うまくいかないとき

起きていることよくある原因確認すること
404 Not Foundパスのつづり違い、存在しない ID資料のパスと1文字ずつ見比べる
Azure の API が
エラーを返す
api-version の付け忘れ、そのリソースで使えない値資料に載っている api-version の値を付ける
410 Gone
(GitHub)
サポートが終わったバージョンを指定したX-GitHub-Api-Version をサポート中の値にする
認証に失敗するトークンを取ったクラウドと、呼んでいるエンドポイントのクラウドが違うサインインと API のエンドポイントの組み合わせ
社内から公開側に
つながる
社内の DNS がプライベート IP を返していない社内で nslookup し、サービス名がプライベート IP になるか

まとめ

項目ポイント
APIエンドポイントAPI にリクエストを送る先の URL。サービスの入口を指すことも、個々の操作の URL を指すこともある
URLの部品スキーム・ホスト・(ポート)・パス・クエリ。パスで対象を、クエリで条件を指定する
操作メソッドとパスの組み合わせで1つの操作になる(GET /users と POST /users は別の操作)
バージョンパス・クエリ・ヘッダのどこに書くかは API ごとに違う
環境開発・検証・本番や、クラウドの種類でベースURLが変わる
公開と社内プライベートエンドポイントは DNS とセットで考え、公開側の入口も閉じる
注意点HTTPS で呼ぶ、秘密は URL に入れない、使っているエンドポイントとバージョンを一覧にする

参考にした資料

この記事は、次の標準と公式ドキュメントで内容を確かめて書きました。仕様や対応状況は変わることがあるので、最新の情報はリンク先で確かめてください。

あとがき

表にしてみると、「エンドポイント」という一つの言葉が、サービスの入口を指したり、1つの操作を指したり、PC を指したりと、広い意味で使われていることがよくわかります。バージョンの書き場所も、同じ Microsoft の中でさえ Graph と Azure Resource Manager で違います。API の資料で迷ったときは、図2のように URL を部品に分けてみると、どこが共通でどこが操作ごとに変わるのかが見えてきます。

コメント