メインコンテンツまでスキップ

RESTful APIとは

RESTful APIの歴史的経緯

  1. 誕生の背景: RESTful APIは、2000年にロイ・フィールディングによって提唱されました。彼はウェブの基本的なプリンシプルを定義し、それをウェブサービスに適用する方法を提案しました。

  2. ウェブの進化: RESTは、インターネットの拡張とともに進化しました。初期のウェブは、単純なHTMLページの交換に過ぎませんでしたが、時間と共により複雑な機能やデータ交換が求められるようになりました。

  3. SOAPとの比較: RESTが登場する以前、ウェブサービスは主にSOAP(Simple Object Access Protocol)を使用していました。SOAPは強力だが複雑で、設定が煩雑であるため、よりシンプルな代替手段としてRESTが注目されました。

RESTful APIとは

RESTful APIは、ウェブ上で情報を交換するための一連の原則と制約を提供します。以下の特徴があります:

  • ステートレス(Stateless): 各リクエストは独立しており、過去のリクエストの状態を保持しません。
  • クライアント-サーバー構造: クライアント(ユーザーインターフェース)とサーバー(データストレージ)は独立しています。
  • キャッシュ可能: レスポンスはキャッシュ可能であるため、効率が向上します。
  • 統一インターフェース: シンプルで標準化された方法でリソースにアクセスします。

実際の例

ここでは、一般的なRESTful APIの使用例を示します:

シナリオ: オンライン書店のAPIを利用して、特定の本の情報を取得する。

  1. リクエスト: クライアント(例えばウェブブラウザ)は、特定のURL(エンドポイント)にHTTPリクエストを送信します。

    • 例: GET https://api.bookstore.com/books/123
  2. レスポンス: サーバーは、要求された本の情報を含むレスポンスを返します。

    • レスポンスの例(JSON形式):
      {
      "id": 123,
      "title": "プログラミング入門",
      "author": "山田太郎",
      "price": 1500
      }

この例では、GETリクエストを使用して本の情報を取得しています。RESTful APIは、このようにウェブ上のリソース(この場合は本)に対して、標準的なHTTPメソッド(GET、POST、PUT、DELETEなど)を使用して操作を行います。

RESTfulなHTTP動詞の例

原則的な例を下記に示します。アプリケーションによっては実装が難しいなど制約もかかるので、 あくまで教科書的な解釈だと思っていてください。

RESTful APIでは、HTTPメソッド(動詞)が重要な役割を果たします。これらはリソース(データやサービス)への操作を定義するために使用されます。以下に、主要なHTTPメソッドとその用途を説明します。

1. GET

  • 用途: リソースの読み取り。
  • 動作: サーバーから情報を取得し、リソースの表現をクライアントに返します。
  • 安全性: GETリクエストは安全であり、リソースの状態を変更すべきではありません。

2. POST

  • 用途: 新しいリソースの作成。
  • 動作: クライアントから送信されたデータを使用して、新しいリソースを作成します。
  • 特徴: POSTは非冪等です。つまり、同じPOSTリクエストを複数回送信すると、同じ操作が複数回実行され、異なる結果が生じる可能性があります。

3. PUT

  • 用途: リソースの更新または作成。
  • 動作: 指定されたURIにリソースが存在する場合は更新し、存在しない場合は新しいリソースを作成します。
  • 特徴: PUTは冪等です。つまり、同じリクエストを何度実行しても、最初の1回を除き、リソースの状態に変更はありません。

4. DELETE

  • 用途: リソースの削除。
  • 動作: 指定されたURIのリソースを削除します。
  • 特徴: DELETEも冪等であり、リソースが既に削除されている場合でも、同じリクエストの結果は変わりません。

5. PATCH

  • 用途: リソースの部分的な更新。
  • 動作: リソースの一部を変更します。
  • 特徴: PATCHは非冪等であり、リクエストに応じてリソースの特定の部分が変更されます。

これらのHTTPメソッドは、RESTful APIの設計において非常に重要です。適切なメソッドを使用することで、APIの意図を明確にし、利用者にとって理解しやすく、使いやすいAPIを実現できます。

RESTful原則に沿っているAPIの例

一般的にRESTfulなURIは議論がありますが、下記のような典型的な特徴があります。

  1. なるべく動詞を含めない
  2. 適切なリソースの階層構造を示している
  3. HTTP動詞によって、リソースに対する振る舞いを表現している

以下に、RESTful APIの原則に則った10個のURI(Uniform Resource Identifier)のサンプルを示します。これらの例は、一般的なウェブアプリケーションやサービスにおける標準的な操作を表しています。

  1. ユーザーの一覧を取得:

    GET /users
  2. 特定のユーザーの詳細情報を取得:

    GET /users/123
  3. 新しいユーザーを作成:

    POST /users
  4. 特定のユーザー情報を更新:

    PUT /users/123
  5. 特定のユーザーを削除:

    DELETE /users/123
  6. 特定のカテゴリに属する商品の一覧を取得:

    GET /products?category=books
  7. 商品の詳細情報を取得:

    GET /products/456
  8. 注文情報の一覧を取得:

    GET /orders
  9. 特定の注文の詳細情報を取得:

    GET /orders/789
  10. ユーザーの特定の注文に対するコメントを取得:

    GET /users/123/orders/789/comments

これらのURIは、RESTful APIの基本的な原則に従っています。つまり、リソース(ユーザー、商品、注文など)に焦点を当て、それらを操作するためのHTTPメソッド(GET、POST、PUT、DELETE)を使用しています。また、リソースの階層関係をURIで表現しています。例えば、/users/123/orders/789/comments は、ユーザー123の注文789に関連するコメントを表しています。