スマートフォンの天気アプリを開くと、現在地の空模様や明日の気温が一目で分かります。しかし、アプリ自身が全国の気象観測機器を独自に運用し、膨大な観測データを直接計算しているわけではありません。アプリは裏側で、外部の気象情報配信サーバーへネットワーク経由で問い合わせを行い、提供元の予報データを取得して画面に表示しています。

このように、異なるソフトウェア同士があらかじめ決められた規約に基づいて安全に情報をやりとりし、機能を連携させるための接続窓口が「API(Application Programming Interface)」です。

現代のWebサービス、スマートフォンアプリ、さらには人工知能(AI)に至るまで、あらゆるデジタルサービスがAPIを介して有機的につながっています。本記事では、APIがどのような仕組みと規約によってソフトウェア同士をつないでいるのか、HTTP通信の基本構造から、データ形式の取り扱い、安全な認証、そして通信失敗に備える耐障害性の設計原則まで論理的に解説します。

1. APIとは何か:ソフトウェアをつなぐ「接続窓口」の基本原則

API(Application Programming Interface)は、ソフトウェア同士があらかじめ決められた形式に基づいて要求(リクエスト)を送り、その結果(応答・レスポンス)を受け取るための接続窓口・インターフェース規約です。

日常生活におけるインターフェースの分かりやすい例が、壁の電源コンセントです。家電製品を使う際、利用者は壁の奥にある発電所や送電網の複雑な配線構造を知る必要はありません。「コンセントにプラグを差し込めば、規定の電圧で電気が供給される」という接続口の仕様(形状や電圧)さえ合致していれば、どんな家電製品でも安全に給電を受けられます。

INTERACTIVE

実際に動かして確かめる

条件や数値を変え、本文で説明した関係を確認できます。
表示値は仕組みを理解するための学習用モデルです。大きな画面で使う

ソフトウェアの世界におけるAPIも、これと同様の役割を果たします。あるプログラムが別のプログラムの機能やデータを利用したいとき、相手の内部コードやデータベースの構造を直接操作するのではなく、公開されたAPIという窓口を通じて「この形式でデータをください」「この処理を実行してください」と依頼します。

ここで重要なのは、APIという概念がインターネット上のWeb通信だけに限定されるものではないという点です。APIは、ソフトウェア間のインターフェース全般に適用される基本概念です。

例えば、パソコンやスマートフォンのオペレーティングシステム(OS)が提供するAPIが存在します。アプリケーションが画面にウィンドウを表示したり、ストレージのファイルを読み書きしたり、ネットワークカードを通じてパケットを送信したりする際、アプリはOSのAPIを呼び出してハードウェアの制御を依頼しています。また、PythonやJavaScriptなどのプログラミング言語が標準ライブラリとして提供する、文字列操作や数学計算のための関数群もAPIの一種です。私たちがよく耳にする「Web API」は、こうした多様なAPIの中で、ネットワーク越しにHTTPなどの通信プロトコルを用いて連携を行う代表的な一実装形態に位置づけられます。

APIを利用する最大の技術的メリットは、「内部実装の隠蔽(カプセル化)」にあります。APIを提供する側は、自社のシステムがどのようなプログラミング言語で開発されているか、どのようなアルゴリズムで計算しているか、どのデータベース製品を採用しているかといった内部事情を外部に公開する必要がありません。「どのような形式で要求を受け付け、どのような形式で応答を返すか」という外部向けの仕様(規約)だけを定義し、保証すれば足ります。

一方、APIを呼び出す側のソフトウェアも、相手の内部構造に依存することなく、仕様書に記載された手順に沿ってリクエストを送るだけで、高度な計算結果や専門データを即座に自社の機能として組み込めます。この疎結合(互いの依存度が低い状態)な関係性こそが、ソフトウェア開発の分業と進化を世界規模で加速させている根本的な原動力です。

2. Web APIの会話規則:HTTPリクエストとレスポンスの構造

インターネットを介して提供されるWeb APIの多くは、Webブラウザの閲覧でも標準的に使われている通信規格「HTTP(RFC 9110)」を土台として設計されています。

HTTP通信は、サービスを要求する「クライアント」と、サービスを提供する「サーバー」の間で交わされる「一問一答」のやりとりを基本とします。クライアントが送信する「HTTPリクエスト(要求)」と、サーバーが返信する「HTTPレスポンス(応答)」は、それぞれ厳密に構造化されています。

HTTPリクエストの構成要素

クライアントがサーバーへ送信するリクエストは、主に以下の要素で構成されます。

  1. ターゲットURI(エンドポイント)

どのサーバーの、どの窓口(リソース)に対して要求を送るのかを示す宛先アドレスです。ホスト名、パス、および条件を絞り込むクエリパラメータで構成されます。 例えば、2026年9月20日に翌日(2026-09-21)の東京の天気を要求する場合、以下のようなURIが指定されます。 https://weather.example.com/v1/forecast?city=tokyo&date=2026-09-21 ここで weather.example.com はホスト名、/v1/forecast は天気予報機能を提供するパス、? 以降の city=tokyo&date=2026-09-21 は取得条件を指定するクエリパラメータです。

  1. HTTPメソッド

指定したリソースに対して「何をしたいのか」という要求の種類(セマンティクス)を示します。代表的なメソッドには以下があります。 - GET:対象リソースの表現(データ)の取得を要求します。サーバー側のデータを変更しない「安全(Safe)」なメソッドであり、同じ要求を何度繰り返しても同じ結果状態となる「冪等(Idempotent)」な性質を持ちます。 - POST:対象リソースに対するデータ処理を要求します。新規データの登録や処理実行に用いられ、サーバー状態を変更するため非安全であり、通常は非冪等(二度送信すると二重に処理される可能性がある)です。データはリクエストボディに格納されます。 - PUT:指定されたターゲットURIのリソースを作成するか、既存のリソースを完全に置き換える(置換する)ことを要求します。サーバー状態を変更するため非安全ですが、同じデータで何度置き換えても最終的な結果状態は同一となるため冪等です。

  1. リクエストヘッダー

クライアントが受け取りたいデータ形式を指定する Accept: application/json や、送信元の身元を示す User-Agent、認証のための資格情報など、通信に関するメタデータをキーと値のペアで送信します。

  1. リクエストボディ

サーバーへ送信したい実データ本体です。GETでは通常省略され、POSTやPUTでデータを送信・更新する際にJSONなどの形式で格納されます。

HTTPレスポンスの構成要素

サーバーは処理結果を以下の要素にまとめて返信します。

  1. ステータスコード

要求の処理結果を機械可読な3桁の数値で表すコードです(RFC 9110 §15)。 - 200 OK:リクエストが正常に処理され、要求された表現がレスポンスボディに含まれていることを示します。 - 201 Created:リクエストが成功し、サーバー上に新しいリソースが作成されたことを示します(POST成功時など)。 - 204 No Content:リクエストは正常に処理されたが、返すべきボディが存在しないことを示します(削除完了時など)。 - 401 Unauthorized:必要な認証が行われていない、または提示された認証情報が無効であることを示します。 - 403 Forbidden:クライアントの身元は確認されたものの、対象リソースへのアクセス権限が拒否されたことを示します(401は「身元未確認」、403は「身元確認済みだが権限なし」という明確な違いがあります)。 - 404 Not Found:指定されたURIに対応するリソースが見つからなかったことを示します。なお、クエリに架空の都市名が渡された場合に404を返すか、不正な引数として「400 Bad Request」を返すかは、APIごとの仕様設計に依存します。 - 500 Internal Server Error:サーバー内部で予期せぬ不具合が発生し、処理を完了できなかったことを示します。なお、サーバーがエラーコードを返す500番台と、通信切断やサーバー完全停止による「無応答」は、技術的に厳密に区別されます。

  1. レスポンスヘッダー

返却する本文の形式を示す Content-Type: application/json やキャッシュ制御情報などのメタデータです。

  1. レスポンスボディ(表現)

要求されたデータ本体(気象情報や処理結果メッセージなど)が格納されます。

利用制限と「429 Too Many Requests」

Web APIは短時間の過剰アクセスによるリソース枯渇を防ぐため、アクセス頻度を制限する仕組み(レートリミット)を備えています。

上限を超えたリクエストに対し、サーバーは「429 Too Many Requests(RFC 6585 §4)」を返して要求を拒絶します。この際、サーバーは「Retry-After」レスポンスヘッダー(RFC 9110 §10.2.3)を付与することがあります。ここには制限が解除されるまでの待機秒数(例: Retry-After: 30)や、具体的な解除日時(HTTP-date形式、例: Retry-After: Sun, 21 Sep 2026 03:45:00 GMT)が示されます。クライアントはこの指示に従い、指定時間が経過するまで再送を控えなければなりません。

架空の東京の2026年9月21日の予報例で、GET要求のcity/date、200 OKの応答データ、アプリの表示を三段で一対一対応させる。モバイルは応答を読める大きさのキー・値の要約として表記する。
解説図架空の天気予報APIを使った模式図。HTTPの200 OKは応答の状態を示し、予報日・天気・最高気温は返された内容の要約であってJSON構文そのものではない。実際は検証、通信遅延、エラー処理なども必要。

図の読み方と限界

上記の要求・応答・画面表示の流れを視覚的に整理したものが図です。

本図は3段の対応関係で構成されています。 上段の「要求」では、クライアントが weather.example.com に対し、クエリパラメータ city=tokyo と date=2026-09-21 を付与したGETリクエストを発行しています(2026年9月20日に翌日の予報を要求する場面)。 中段の「応答」では、ステータスコード200 OKとともに、JSON形式のレスポンスボディ(forecast_date: "2026-09-21"、weather: "Sunny"、temperature_max_c: 24)が返信されています。 下段の「画面表示」では、クライアントアプリが受信したJSONデータを解釈し、UI上に「東京」「2026年9月21日の予報」「晴れ」「予想最高気温24℃」と配置して表示しています。要求パラメータ、応答データ、画面表示が一対一で完全に対応していることが確認できます。

ただし、本図には概念理解を助けるための抽象化に伴う限界があります。図中では通信が瞬時に成功しデータが直ちに画面へ反映されているように描かれていますが、実際のシステムではHTTPヘッダーの送受信、ネットワーク遅延、HTTPS/TLS暗号化ハンドシェイク、後述する構文解析やバリデーション、通信エラーへの対処といった複数の複雑な処理工程が水面下で必ず介在しています。

3. 関心の分離:画面とデータ処理を独立させるRESTの思想

現代のWeb API設計で広く採用されているアーキテクチャスタイルが、Roy Fieldingが体系化した「REST(Representational State Transfer、Fielding 2000)」です。Fieldingがその中核原則として挙げたのが、「クライアント・サーバーの関心の分離(Separation of Concerns, Fielding 2000, §5.1.2)」です。

「関心の分離」とは、システムの構成要素ごとに責務を明確に切り分け、互いの内部領域に干渉しないよう設計する原則です。

  • クライアントの関心:ユーザーインターフェース(UI)、画面レイアウト、入力検知、操作感(ユーザー体験)の向上。
  • サーバーの関心:データの永続化(保存)、計算処理、ビジネスロジックの実行、アクセス権限の管理、データの整合性維持。

この原則に従ってクライアントとサーバーをAPI経由で切り離すことで、システムは大きな柔軟性と拡張性を獲得します。

独立した進化とマルチプラットフォーム展開

関心の分離による第一の恩恵は、双方が独立して進化できる点にあります。 クライアント開発チームが画面デザインを一新してボタン配置を変更しても、API仕様(リクエストとレスポンスの形式)が変わらない限り、サーバー側のプログラムを書き換える必要はありません。逆に、サーバー開発チームがデータベース製品を移行したり処理アルゴリズムを高速化したりしても、APIの窓口さえ保たれていれば、配布済みのクライアントアプリを改修・再配布する必要はありません。

第二の恩恵は、マルチプラットフォーム展開の容易さです。 画面表示とデータ処理が一体化していると、Webブラウザ、iPhone、Android、スマートウォッチなどのデバイスごとに個別のデータ管理サーバーを構築しなければなりません。しかし、純粋なデータのみを入出力するWeb API窓口をサーバー側に一つ用意しておけば、同一の窓口から多様なプラットフォームのクライアントへ等しくデータを提供できます。各クライアントは、受信した共通データを自身の画面サイズや操作体系に合わせてレンダリングするだけで済みます。

AIのTool Use / Function Callingへの接続

近年の人工知能(AI)、特に大規模言語モデル(LLM)が外部ツールを呼び出して現実のタスクを実行する技術(Tool Use や Function Calling)も、この関心の分離の原則を土台としています。

自然言語を扱うAIモデルは、直接データベースにSQLを発行したり外部機器を物理制御したりするわけではありません。あらかじめ提示されたWeb APIの仕様(機能名、受け付ける引数の名前やデータ型)に基づき、AIモデルは指示に応じて「このAPIを引数 city="tokyo", date="2026-09-21" で呼び出すべきである」という呼び出しパラメータをテキストとして生成します。

そして、AIモデルを組み込んだホストアプリケーションが出力を受け取り、引数が仕様に合致しているかを厳格に検証した上で、実際のWeb APIへリクエストを代理送信します。APIから返ってきたレスポンスはホストアプリを経由してAIモデルへ実行結果として渡されます。このように「推論とパラメータ決定(AIモデルの関心)」と「実際の通信・実行・検証(ホストアプリとAPIサーバーの関心)」を明確に分離することで、AIは既存のソフトウェア資産と安全に連携し、信頼性の高い処理を実現しています。

4. データを受け取る技術:JSONの構文・検証と資格情報の保護

Web APIのデータ交換形式として最も普及しているのが「JSON(JavaScript Object Notation、RFC 8259)」です。人間にも読みやすく、プログラムでの構文解析(パース)も容易です。RFC 8259で定義されているデータ型は、オブジェクト、配列、文字列、数値、真偽値、nullの6種類に限定されています。

構文・データ型と「業務上の意味・単位」の区別

JSONを扱う上で技術的に重要なのは、「JSON規格が保証するのは構文とデータ型だけであり、値が持つ業務上の意味や単位までは保証しない」という点です。

例えば、天気予報APIから以下のJSONレスポンスが返ってきたとします。

{
  "forecast_date": "2026-09-21",
  "weather": "Sunny",
  "temperature_max_c": 24
}

RFC 8259が保証するのは、forecast_date の値が文字列 "2026-09-21" であり、temperature_max_c の値が数値 24 であるという構文規則に過ぎません。この 24 が「摂氏(℃)」であること、これが「最高気温」を表すこと、そして日付が「予報の対象日」を指すことは、JSON規格ではなくAPI提供元の仕様書によって初めて定義されます。仕様書を確認せずに勝手な解釈で処理すれば、システムは重大な誤作動を招きます。

データ受信時の3つの必須工程

クライアントがAPIサーバーからJSONデータを受信し、安全に画面へ表示するまでには、以下の3工程を順に踏む必要があります。

  1. 構文解析(パース)

受信した生の文字列データを、プログラムがメモリ上で扱えるオブジェクトや連想配列に変換します。文法誤りや通信途絶があれば、ここでパースエラーとして検知され処理が中断されます。

  1. 検証(バリデーション)

パースされたデータが前提条件を満たしているかを検査します。必要なキーが存在するか、期待されるデータ型と一致しているか、値が妥当な範囲(例: 気温が -100℃〜60℃ の範囲内か)を検証します。外部から届くデータを無条件に信用せず、境界線で厳格に検証することが不可欠です。

  1. 画面部品へのレンダリング

検証を通過したデータのみを取り出し、UIコンポーネント(テキストラベルや画像ビュー)に割り当てて描画します。未検証のデータを直接UIに流し込むと、予期せぬ形式のデータが届いた際に画面クラッシュや表示崩れを引き起こします。

資格情報の性質とBearerトークンの保護

多くのWeb APIでは、利用者の識別と権限管理のためにAPIキーやアクセストークンといった資格情報の提示を要求します。

その代表がOAuth 2.0等で用いられる「Bearerトークン(RFC 6750)」です。Bearer(持参人・所持者)の名の通り、「そのトークン文字列を持っている者であれば、誰でもその権限を行使できる」という性質を持ちます。劇場の入場券や金券と同様、所持の事実そのものによって認証・認可が行われます。そのため、トークンや秘密キーが第三者に漏洩すると、正規の利用者に成りすまされてデータの盗難・改ざんや有料APIの不正利用を招きます。

クライアント配布コードへの埋め込み禁止と中継サーバー(BFF)

Web API連携における重大なセキュリティ事故の一つが、「ブラウザのJavaScriptコードやスマートフォンアプリのバイナリ内に、外部APIの秘密キーを直接記述してしまう」ことです。

ブラウザで実行されるコードは開発者ツールで誰でも平文閲覧でき、難読化していてもプロキシツールで通信ヘッダーを監視すれば数秒でキーを抜き取れます。スマートフォンアプリも、配布ファイルを逆コンパイルすれば埋め込まれた文字列は容易に解析されます。そのため、「不特定多数に配布されるクライアントコード内に秘密キーを直接埋め込んではならない」のは必須の安全原則です。

この問題を解決するのが「中継サーバー(BFF: Backend For Frontend)」の構成です。ブラウザやアプリは自社が管理する安全な中継サーバーとの間でのみ通信を行います。外部APIと通信するための秘密キーはクライアントへ渡さず、中継サーバーの環境変数等で厳重に保管します。クライアントからの要求を受けた中継サーバーが背後で秘密キーを付与して外部APIを呼び出し、結果をクライアントへ返送します。これにより秘密キーを外部に晒さず安全な連携を実現できます。

5. ネットワークの不確実性に備える:タイムアウト、再試行、キャッシュの設計

同一コンピュータ内のメモリ上で完結する関数呼び出しとは異なり、Web API連携は常に物理的なネットワークを挟んで行われます。パケットの遅延や欠落、ルーター障害、一時的なサーバー過負荷などの不確定要素が常に存在するため、「ネットワークはいつでも切断・遅延し、相手サーバーは突然停止し得る」という前提に立った耐障害性設計が不可欠です。

タイムアウトの本質と「二重処理リスク」

API通信の応答をいつまでも待ち続けると、アプリの処理が滞り端末リソースを浪費します。そのため、クライアントには一定時間応答がなければ待機を打ち切る「タイムアウト」を設定します。

ここで注意すべき重大な誤解が、「タイムアウトしたのだから、サーバー側では何も処理されていないはずだ」と思い込むことです。タイムアウトは「クライアントが設定した待ち時間の制限に達した」というローカルな事実を示すに過ぎず、サーバー側で処理が完了していないことを証明するものではありません。

例えば、クライアントのリクエストがサーバーに正常に届き、データベースへの書き込みが完了したものの、返送されたレスポンスが通信障害でクライアントに届く直前に消滅した場合、クライアント側にはタイムアウトエラーが表示されます。この処理が決済や送金であった場合、クライアントが「失敗した」と判断して即座に同じリクエストを再送信すると、2回連続で課金や送金が行われる「二重処理事故」が発生します。

なお、通信待機中に画面がフリーズして操作不能にならないよう、通信処理はUIを司るスレッドから切り離し、バックグラウンドの「非同期処理」として実行することも必須要件です。

安全な自動再試行(リトライ)の設計原則

通信エラー時に自動で再送信を行うリトライは一時的な通信障害の克服に有効ですが、無秩序な再試行はシステム障害を悪化させます。安全な自動再試行には以下の条件を厳格に順守する必要があります(RFC 9110 §9.2.2)。

  1. エラー種別の選別

再試行すべきなのは、ネットワーク瞬断やサーバーの一時的過負荷を示す「503 Service Unavailable」、利用制限の「429 Too Many Requests」などの一時的障害に限られます。要求内容に誤りがある「400 Bad Request」「401 Unauthorized」「403 Forbidden」「404 Not Found」などの400番台エラーは、内容を修正しない限り何度繰り返しても成功しないため、決して自動再試行してはなりません。

  1. メソッドの安全性と冪等性の判定

GETやPUTのような冪等(何度実行しても結果状態が同一)な操作であればタイムアウト時の再試行は安全です。しかし、POSTのような非冪等な操作は二重処理を引き起こす危険があるため、安易に自動再試行を行ってはなりません。

  1. 冪等性キー(Idempotency Key)の導入

POSTなどの非冪等な処理を安全に再試行する場合、リクエストヘッダーに一意な識別子(UUIDなど)を「冪等性キー」として付与します。サーバー側はこのキーを記録し、同一キーのリクエストが重複して届いた場合は2回目の処理を実行せず、初回と同じ処理結果を返します。これにより安全な再試行が可能となります。

  1. 回数上限と総待機時間の上限

サーバーが完全にダウンしている場合、無限の再試行は端末リソースを枯渇させます。再試行回数は最大3回程度、総待機時間も数十秒以内などの上限を設ける必要があります。

  1. 指数バックオフ(Exponential Backoff)とジッター(Jitter)

再試行間隔を1秒固定にするのではなく、失敗するごとに待機時間を指数関数的に延ばします(1秒後、2秒後、4秒後…)。さらに、待機時間に少量のランダムな揺らぎ(ジッター)を加えます。多数のクライアントが一斉に同一間隔で再試行すると、サーバー復旧の瞬間に大量のリクエストが集中して再び過負荷に陥る「サンダリングハード問題」が発生します。指数バックオフとジッターによって送信タイミングを時間的に分散させることで、サーバーの回復を支援します。

HTTPキャッシュの活用と画面表示の誠実性

APIを呼び出すたびにネットワーク通信を行うと、通信量やサーバー負荷、バッテリー消費が増加します。そこで、取得したレスポンスを一定期間クライアント側に保持して再利用する「HTTPキャッシュ(RFC 9111)」を活用します。

サーバーはレスポンスヘッダーの Cache-Control(例: max-age=1800 で30分間有効)で有効期限を指示したり、リソース内容を示す識別子 ETag を付与したりします。クライアントは次回以降、If-None-Match ヘッダーにETagを載せて問い合わせ、サーバー側で更新がなければ「304 Not Modified」という本文なしの応答を受け取ることで通信量を削減できます。

ただし、キャッシュを利用する際は画面表示の誠実性が求められます。利用者に古い情報を最新と誤認させないため、画面上では「データの取得日時(通信を行った日時)」と「予報の対象日時(データが指す日時)」を明確に区別して表示しなければなりません。さらに、電波途切れなどで過去のキャッシュデータを表示し続ける場合は、「オフライン表示中(2026年9月20日 15:00取得のデータ)」といった注釈をUI上に明示し、情報の鮮度に対する誤解を防ぐ必要があります。

6. よくある疑問と誤解

Q1. APIキーをブラウザのHTMLやJavaScriptに直接書いてはいけないのはなぜですか?

A1. ブラウザに配信されるコードは利用者の手元で動作する公開情報だからです。開発者ツールを開けばソースコードは平文で閲覧でき、通信ログ監視ツールを使えばリクエストヘッダー内のAPIキーを容易に抽出できます。Bearerトークン等の資格情報は「所持している者であれば誰でも権限を行使できる」性質を持つため、漏洩すると第三者による不正利用や高額課金につながります。秘密キーは決してフロントエンドに渡さず、自社の中継バックエンドサーバー(BFF)の環境変数で保護してください。

Q2. 通信がタイムアウトした際、すぐに同じリクエストを再送信しても問題ありませんか?

A2. GETのような冪等な操作であれば安全ですが、POSTなどの非冪等な操作では重大な二重処理事故を招く恐れがあります。タイムアウトはクライアントの待機上限に達したことを示すだけであり、サーバー側では処理が成功している可能性があります。非冪等な処理を安全に再試行するには、リクエストに一意な「冪等性キー」を付与し、サーバー側で重複実行を抑止する仕組みをあらかじめ導入しておく必要があります。

Q3. HTTPメソッドのPOSTとPUTは、どのように使い分けるべきですか?

A3. 「リソースのURI(識別子)をどちらが決めるか」と「処理が冪等であるか」で使い分けます。サーバー側が新しいIDを自動採番してリソースを作成する場合は「POST」を用います(例: /articles への投稿)。一方、クライアント側がリソースのURIをあらかじめ指定して作成または完全置換する場合は「PUT」を用います(例: /users/profile/avatar への画像設定)。PUTは何度繰り返しても結果状態が変わらない冪等な操作ですが、POSTは実行のたびに新たな処理が行われる非冪等な操作です。

結び

ソフトウェア同士を安全かつ確実につなぐAPIは、現代のデジタル社会を支える不可欠なインターフェースです。それは単にデータを送受信する導管ではなく、クライアントとサーバーの関心を明確に分離し、双方が束縛されずに独立して進化するための高度な設計規約でもあります。

HTTPプロトコルのセマンティクスに基づいたメソッドやステータスコードの使い分け、JSONデータの厳格な検証、資格情報の適切な保護、そしてネットワークの不確実性を織り込んだ耐障害性とキャッシュの設計。これら一つひとつの原則を正しく理解し適用することが、障害に強く拡張性の高いシステムを構築するための確固たる基礎となります。

出典・参考資料

  • RFC 9110: HTTP Semantics - IETF

https://www.rfc-editor.org/rfc/rfc9110

  • RFC 6585: Additional HTTP Status Codes - IETF

https://www.rfc-editor.org/rfc/rfc6585

  • RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format - IETF

https://www.rfc-editor.org/rfc/rfc8259

  • RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage - IETF

https://www.rfc-editor.org/rfc/rfc6750

  • RFC 9111: HTTP Caching - IETF

https://www.rfc-editor.org/rfc/rfc9111

  • Architectural Styles and the Design of Network-based Software Architectures (Roy Thomas Fielding, 2000)

https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm