REST APIとは何かをわかりやすくまとめてみた

REST APIとは何かわかりやすくまとめてみた

こんにちは!TechJourneyを運営している学生エンジニアの今井宏輔と申します。

今回は、Web開発の世界で非常に重要な概念の一つであるREST APIについて、わかりやすくまとめてみました。私たちが日常的に使っているアプリやWebサービスの多くが、このREST APIによって成り立っています。そう、あなたが今読んでいるこのブログもそうです。

REST APIとは

REST APIは、Web上でシステム同士が通信するためのルールの集まりです。ここでいう「REST」とは、「Representational State Transfer」の略で、これを日本語に訳すと「代表的な状態遷移」となります。

少し難しそうに聞こえますが、Web上のデータや状態を、シンプルな形でやり取りしようよという思想です。この思想に従って設計されたAPIを「RESTfulなAPI」と呼びます。

  • Representational(代表的な):ここでは「データの形式」を指し、Web上の情報がどのように表現されるか(例えば、JSONやXMLなど)を意味します。
  • State(状態):システムの現在の状態や情報のことを指します。
  • Transfer(遷移):この情報がネットワークを通じてどのようにやり取りされるかというプロセスです。

簡単に言うと、REST APIはWebアプリケーションやサービスが、インターネットを介して情報を共有したり操作したりするための「共通の言語」のようなものです。

あなたがスマートフォンで天気予報をチェックしたり、SNSに投稿する際にも、バックグラウンドではREST APIが活躍しています。

RESTの4つの基本原則

REST APIを理解するには、その背後にある4つの基本原則を抑える必要があります。これらは、APIが「RESTful」と呼ばれるための条件です。

アドレス可能性(Addressability)

アドレス可能性とは、Web上のリソースが一意のURLによってアクセス可能であることを指します。これにより、インターネット上のあらゆる情報が、特定の場所(URL)を通じて取得や操作が可能になります。

  • ブログ投稿を取得するためのURLがあるとします。例えば、https://example.com/posts/123 は、IDが123のブログ投稿を指しています。このURLをブラウザに入力することで、その投稿の内容を閲覧できます。
  • 同様に、https://example.com/profiles/john_doe は、ユーザー名がjohn_doeのプロフィールページを指します。このURLにアクセスすることで、John Doeのプロフィール情報にアクセスできるわけです。

統一インターフェース(Uniform Interface)

REST APIでは、汎用的な方法でリソースにアクセスするための一貫したインターフェースを定義します。これにより、どのような種類のアプリケーションでも、同じ方法でリソースを操作できるようになります。

ここで重要なのが、GET, POST, PUT, DELETEの4つの基本操作です。

  • GET:データを取得するために使用します。この操作は、データに影響を与えずに読み取るだけなので、「安全」とされています。
  • POST:新しいデータを作成する際に使用します。例えば、新しいブログの投稿を追加するときなどです。
  • PUT:既存のデータを更新するために使用します。データ全体を置き換えるという意味合いがあります。
  • DELETE:データを削除するために使用します。

ステートレス性(Stateless)

ステートレス性とは、サーバーがクライアントの状態(セッション情報など)を保存しないという特性です。各リクエストは、それ自体で完結している必要があり、過去のリクエストに依存してはいけません。

例えば、行きつけのお店では「いつもので」と頼めば期待したものを提供してくれますが、そうではなく毎回注文は指定しましょうということです。

不便になってしまうのではと思いますが、それを管理することは複雑であり、コストが高くなってしまいます。ステートレス性を維持することで、クライアントの状態を覚える必要がないため、サーバー側のシステムを単純にできます。

  • オンラインショッピングサイトで商品を検索する際、検索クエリはURLの一部(クエリパラメータ)として送られます。例えば、https://example.com/products?category=books&author=JK_Rowling は、「books」カテゴリーの「JK Rowling」の著書を検索するクエリです。サーバーはこのリクエストを受け取ると、必要な情報をデータベースから取得して応答しますが、このリクエストの情報を次のリクエストには使用しません。

接続性(Connectability)

リソース間の関連をリンクで示すことで、ナビゲーションやリソースの発見を容易にします。これにより、アプリケーションがより豊かな情報を提供できるようになります。

  • REST APIを通じて特定のブログ投稿を取得した際、そのレスポンスには、関連する他のリソースへのリンクが含まれていることがあります。例えば、投稿https://example.com/posts/123のレスポンスには、その投稿の著者のプロフィールページhttps://example.com/authors/jane_doeへのリンクや、同じカテゴリの他の投稿へのリンクが含まれている場合があります。これにより、APIの消費者は、関連する情報に簡単にアクセスできます。

まとめ

REST APIは、現代のWebサービスやアプリケーション開発において、欠かせない要素の一つです。そのシンプルさと柔軟性により、世界中で幅広く採用されています。

みなさんも、この記事をきっかけにREST APIについて少し理解できたなら嬉しいです。