メインコンテンツへスキップ

REST APIの基本

🔗 REST APIとは

REST APIとは、HTTPをベースにした「リソース指向」のAPI設計スタイルです。
Webサービス同士が、URLとHTTPメソッドを使ってシンプルに情報をやり取りするための設計原則として広く使われています。


🧪 RESTとは?

RESTは「REpresentational State Transfer」の略。
2000年にロイ・フィールディングが博士論文で提唱したアーキテクチャスタイルで、Webの設計原則を抽象化したものです。

RESTは「ルール」ではなく「思想」に近く、HTTPの設計をより自然で拡張しやすい形にするためのガイドラインです。


🧱 RESTの6つの原則(ざっくり)

原則 意味と概要
クライアント-サーバ UI(クライアント)と処理(サーバ)を分離
ステートレス 各リクエストは独立して完結。サーバ側は状態を保持しない
キャッシュ可能 レスポンスはキャッシュ可能と不可の指定ができる
統一インターフェース 一貫したURL構造とメソッドの使い方(後述)
階層構造 リソースはURLの階層で表現され、透過的なプロキシなども使える設計
コードオンデマンド(任意) JavaScriptなどを動的にクライアントに送ることで、機能を拡張可能にする

🌳 リソースとURL設計(RESTらしさの核心)

RESTでは「リソース(=名詞)」をURLで表します。

  • 商品 → /products

  • ユーザー → /users

  • 注文 → /orders

そのリソースに対して、HTTPメソッド(動詞)を使って操作します。

HTTPメソッド 操作 対象
GET 取得 一覧 or 個別 /products, /products/123
POST 作成 一覧(に新規追加) /products
PUT 上書き 個別リソース /products/123
PATCH 一部更新 個別リソース /products/123
DELETE 削除 個別リソース /products/123

URLの中に動詞を入れないのがRESTのスタイルです(× /getProduct、◯ /products/123)。


🛠️ REST APIの実装イメージ

1. 商品の一覧を取得

GET /products
→ 200 OK
[
  {"id": 1, "name": "みかん"},
  {"id": 2, "name": "りんご"}
]

2. 商品を追加

POST /products
Content-Type: application/json

{
  "name": "バナナ"
}
→ 201 Created

3. 商品の削除

DELETE /products/2
→ 204 No Content

🧭 REST API設計のベストプラクティス

項目 推奨される設計
URL構造 名詞ベース(リソース)を使う
状態コード 適切なHTTPステータスを返す(200, 201, 204など)
エラーメッセージ JSONで返し、message, code, detailsなど含める
バージョン管理 URLやヘッダーで指定(例:/v1/products
認証 BearerトークンやOAuthで実装する

URLに「動詞+名詞」が混ざっていると、RESTの設計原則から外れてメンテナンス性が落ちます
(× /getAllProducts → ◯ /products + GET)


🔐 REST APIとセキュリティ

  • 認証:OAuth 2.0APIキーによるアクセス制限

  • 通信:HTTPSを必須化し、盗聴を防止

  • レート制限:APIの利用制限(DoS対策)を実装


🧾 OpenAPI(旧Swagger)での定義

OpenAPIを使うと、APIの仕様書をJSON/YAMLで記述し、
ドキュメントやモックサーバを自動生成できます。

例:Swagger UI で /products/users にアクセスするためのGUIができる。


REST APIは多くのWebサービスやスマホアプリの裏側を支える標準インターフェースです。
API全体の概念については「APIの基本」もぜひ参考にしてください。