🦔

API基礎(初学者向け)

に公開

はじめに

こんにちは。
個人開発をしながら、引き続きエンジニアになるべく修行しております。
APIについて、基本的な部分からおさらいをしたいと思ったので、せっかくなので記事にしてみることにしました。

もし間違っているところがあったらコメントで優しく教えてくれると嬉しいです。

1. APIとは?

APIは「Application Programming Interface」の略。
Application:パソコンやスマホの中で動くソフト
Programming:パソコンやスマホに実行させる指示を出すこと
Interface:ITにおいては異なるシステムや機器が情報をやりとりするための接点や機能、接続方法

つまりAPIとは、 「ソフトウェアやプログラム、Webサービス間など異なるもの同士をつなぐもの」 のことを言います。

2. APIの使い方

少し具体的にAPIの利用シーンをイメージしてみましょう。
飲食店検索サイトやフードデリバリーアプリは、自分で地図を作っているわけではありません。
Google Maps APIに「この住所の地図を表示して」「ルートを計算して」と依頼しています。
APIを利用することで、開発者はゼロから地図システムを作らずに済むわけです。

3. APIの基本的な仕組み

(1)リクエストとレスポンス

APIの基本的なプロセスは、リクエスト(=要求)とレスポンス(=返答)で構成されます。
API利用者がリクエストをし、API提供者がレスポンスを返します。何のリクエストに対しどのようなレスポンスを返すかということを提供者がAPI設計段階で考え、実装し、利用可能な状態にします。
この設計次第で、APIのリクエストとレスポンスの関係は変わるため、「APIは〇〇してくれるもの」と一概にいうことはできません。

画像引用元: ビジネス+IT APIとは何か? API連携ってどういうこと? 図解で仕組みをやさしく解説

(2)リクエストの構成要素

APIリクエストを構成する要素は以下です。

①ベースURL:

APIの入り口となる基本のURLです。
例:https://api.example.com

②パス:

ベースURLの後ろにつけて、アクセスしたい機能やデータを指定します。
例:https://api.example.com/maps
(地図情報を取得するエンドポイント)
補足:/health のような「ヘルスチェック(=『APIが落ちてないか』を確認)」用エンドポイントもあります。実務では監視ツールからこのエンドポイントを定期的に叩いています。

③メソッド:

HTTPの動詞で、「リソースに対してどんな操作をしたいか」 を表すもので、RESTという設計思想では特に重要になります(→ 詳しくは後述)。

例:

  • GET:データを取得
  • POST:データを新規作成
  • PUT:データを更新
  • DELETE:データを削除
  • PATCH:一部変更(PUTは完全に上書き)
  • HEAD:ヘッダー情報の取得
  • OPTIONS:サポートしているメソッドを調べる
    ※どのメソッドを使えるかはAPIごとに決まっています。

④ヘッダー:

リクエスト・レスポンスに関する追加情報を表すメタデータ[1]で、データをどう解釈すべきかを示す「ラベル」のようなものです。
通信の前提条件や本体(ボディ)の扱い方、形式・認証・キャッシュ・CORSなどの制御情報を運びます。

⑤リクエストのボディ:

API利用者がサーバーに送る「中身」。
主に POST / PUT / PATCH で使われます。例:新しいユーザーを作成するリクエスト

{
 "name": "Mio",
 "email": "mio@example.com"
}

(3)レスポンスの構成要素

①レスポンスのボディ:

サーバーがクライアントに返す「中身」。主に GETやPOSTの結果 が入ります。
例:ユーザー作成が成功したときのレスポンス

{
"id": 123,
"name": "Mio",
"email": "mio@example.com"
}

②ステータスコード:

何が起きたかを最短で教えてくれる"信号"のようなもので、APIレスポンスに含まれます。
例:

  • 1XX:情報レスポンス(リクエストが受信され、処理が継続中である)
  • 2XX:成功レスポンス(リクエスト成功)
  • 3XX:リダイレクトメッセージ(リクエストを完了するには更なる動作が必要)
  • 4XX:クライアントエラー(リクエストは受理されず。リクエストを送る側、送ったデータに問題がある)
  • 5XX:サーバーエラー(リクエストは受理されたが、サーバー側に問題がある)

参考:mdn HTTPレスポンスステータスコード

4. RESTとCRUDの考え方

REST(アーキテクチャ思想)

リソース(データ)をURLで表し、GET/POST/PUT/PATCH/DELETE といったメソッドで操作する"という設計思想のことです。

CRUD(操作の種類)

データに対する4操作を指します。
Create / Read / Update / Delete
例: 会員情報登録=Create、会員情報取得=Read、会員情報更新=Update、会員情報削除=Delete。

RESTでは、このCRUDとHTTPメソッドを対応させてAPIを設計します。
例:
- Create → POST /users
- Read → GET /users/{id}
- Update → PUT /users/{id}
- Delete → DELETE /users/{id}

5. RPCの考え方

RPC(Remote Procedure Call)

REST が「リソース(データ)をURLとメソッドで操作する」思想なのに対し、
RPC は「動作(関数や処理)を呼び出す」スタイルです。

例:
REST → GET /users/123(ユーザー情報を取得)
RPC → POST /getUser(getUser という処理を呼び出す)

特徴:

  • 直感的に「処理を呼ぶ」イメージで理解しやすい
  • 小規模開発では 「処理名がそのままAPI名」だとわかりやすい。ただしエンドポイントが増えると複雑になりやすい
  • サーバー間通信(バックエンド同士の通信) では RPCが選ばれることが多い
  • RPCの実装にはいろいろあり、JSON-RPC や tRPC(軽量で扱いやすい)から、gRPC(高速・多言語対応)まで用途に応じて選択できる

APIの基礎はここまで。APIは利用するだけじゃなく、自分でつくることもできます。
次回はPythonのフレームワークFastAPIを使ったAPIの作り方についてまとめたいと思います。
最後までお読みいただき、ありがとうございました🌼

脚注
  1. メタデータ:「データに関するデータ」であり、コンテンツの内容、形式、作成者、更新日などの属性を説明する情報 ↩︎

Discussion