バックエンドの主な役割は、クライアントアプリケーションが利用するための API(Application Programming Interface) を提供することです。特に、データベースの基本的な操作(データの作成、読み取り、更新、削除)を行うAPIは CRUD操作 と呼ばれ、全てのWebサービスの基本となります。
1. APIとエンドポイントの基本
API (Application Programming Interface) / 説明: ソフトウェアやプログラム間でデータをやり取りするための窓口や規約のことです。バックエンドAPIは、サーバーが提供する機能の窓口です。
エンドポイント(Endpoint) / 説明: クライアントがアクセスする特定のURLのことです。通常、リソース名(例:
/usersや/products)を含みます。RESTful API / 説明: HTTPメソッドとURLを使ってリソースを操作する原則に従ったAPI設計スタイルです。CRUD操作をHTTPメソッドにマッピングすることで、直感的で統一されたインターフェースを提供します。
2. CRUD操作とHTTPメソッドのマッピング
CRUD操作(Create, Read, Update, Delete)は、RESTful APIの主要なHTTPメソッドと対応します。
作成 (Create) / HTTPメソッド: POST / 目的: 新しいリソースをサーバーに送信し、作成する。 / エンドポイント例:
/items読み取り (Read) / HTTPメソッド: GET / 目的: リソースを取得・参照する。 / エンドポイント例:
/items(一覧),/items/1(個別)更新 (Update) / HTTPメソッド: PUT / PATCH / 目的: 既存のリソースを修正・更新する。 / エンドポイント例:
/items/1削除 (Delete) / HTTPメソッド: DELETE / 目的: 既存のリソースを削除する。 / エンドポイント例:
/items/1
3. 各CRUDエンドポイントの実装(アイテムリソース /items の場合)
C: Create(作成)
メソッドとURL /
POST /itemsクライアントからの入力 / 説明: リクエストボディに、作成したいアイテムのデータ(JSON形式など)を含めます。
サーバーでの処理 / 説明: リクエストボディのデータを検証し、問題なければデータベースに新しい行を**
INSERT**します。レスポンス / 説明: 通常、作成が成功したことを示す
201 Createdステータスコードと、作成されたアイテムのデータを返します。
R: Read(読み取り)
メソッドとURL (一覧) /
GET /itemsサーバーでの処理 (一覧) / 説明: データベースからすべてのアイテムを**
SELECT**で取得します。レスポンス (一覧) / 説明:
200 OKステータスコードと、アイテムのリスト(配列)を返します。メソッドとURL (個別) /
GET /items/123サーバーでの処理 (個別) / 説明: URLに含まれるID(例:
123)を使って、データベースから特定のアイテムを**SELECT**で取得します。レスポンス (個別) / 説明:
200 OKと個別のアイテムデータ。リソースが存在しなければ404 Not Foundを返します。
U: Update(更新)
メソッドとURL /
PUT /items/123(またはPATCH /items/123)クライアントからの入力 / 説明: リクエストボディに、更新したいデータを含めます。
サーバーでの処理 / 説明: URLのIDに対応するデータベースの行を、リクエストボディのデータで**
UPDATE**します。レスポンス / 説明: 通常、更新が成功したことを示す
200 OKや204 No Contentを返します。
D: Delete(削除)
メソッドとURL /
DELETE /items/123サーバーでの処理 / 説明: URLのIDに対応するデータベースの行を**
DELETE**します。レスポンス / 説明: 削除が成功したことを示す
200 OKや204 No Contentを返します。
⭐ 演習課題
あなたはユーザー情報(リソース名: /users)を管理するシンプルなAPIを開発しています。
新しいユーザーを作成するためにクライアントが送るべきHTTPメソッドとURLは何ですか?
IDが10のユーザーの名前を更新する操作に、最も適切なHTTPメソッドは何ですか?
IDが10のユーザーを削除するリクエストに対し、サーバーが成功時に返すステータスコードは何が一般的ですか?
/users/abc(IDが数値であるべきところを文字列にした) という不正なリクエストが来た場合、サーバーはどのような4xx系ステータスコードを返すべきですか?