## What — プログラム同士をつなぐ窓口 API とは、Application Programming Interface。**HTTP 通信を通して、プログラムが直接サービスを利用するための窓口**。 頼む側(クライアント)と返す側(サーバー)という役割分担の上に、プログラム向けの窓口を開けたもの。役割分担そのものの話は [[サーバーとクライアント]] に書いた。 ## なぜ窓口が要るのか API があることで、**相手のプログラムの中身を知る必要がなくなる**。 もし API がなかったら、相手のコードや DB に直接つながないといけない。そして相手が中身を変えたら、すべてが壊れる。 API はこの密な結合を切って、**境界線を「約束」だけにする**。言語や環境が違っても、HTTP と JSON でつながる。 ここから下は、他人の API を正しく使うための地図。HTTP の流れ・読み方・認証・実戦の壁、の順に辿れます。 ## 仕組み — 1回の通信で何が起きるか - [[サーバーとクライアント]] — 頼む側と返す側の役割分担。すべての土台 - [[APIとJobの違い]] — HTTP で起動する常駐サーバーという理解 - [[HTTPリクエストの流れ]] — DNS → TCP → TLS → HTTP の7段階 - [[HTTPリクエストの構造]] — 注文票の4点セット - [[HTTPレスポンスの構造]] — 返答の3点セットとステータスコード - [[リンクの原理]] — リンクの実体は URL+GET。API と同じ仕組み ## 読み方 — エンドポイントを分解する - [[HTTPメソッド]] — 1行目の動詞5個と判定軸 - [[REST]] — 資源(名詞)×メソッド(動詞)で読む流儀 - [[エンドポイント]] — メソッド+パスで決まる操作1つ分の受け口 - [[クエリパラメータ]] — `?` 以降の「見せ方の注文」 ## 認証 — 誰が・していいか - [[認証と認可]] — 401(誰か)と 403(していいか)の2段階検査 - [[認証トークンの3層]] — OAuth2・Bearer・JWT の役割分担の全体図 - [[JWT]] — トークンの書式 - [[Bearer]] — トークンの渡し方 - [[OAuth2]] — トークンの入手手続き ## 実戦 — 最初に踏む壁 - [[curl]] — ターミナルから HTTP を1回送る実験台 - [[ページネーション]] — 一覧APIは全件を返さない - [[レートリミット]] — 429 は「待って再送」 - [[エラーレスポンス]] — コード→ボディ→ドキュメントの3段読み ## 関連 - [[Tech]] — 技術トピックの地図へ戻る