RESTとは何かを理解しよう【WEB開発入門/REST API】

Programming

1.はじめに

 こんにちは。かじです。

 今回はRESTについて解説していきたいと思います。

 皆さんは、RESTと聞くと何を想像するでしょうか。REST APIを想像し「HTTPでアクセスで、データをXMLやJSONを返すAPI」という認識を持つでしょう。

 Web APIと言われると外部のプログラムからWebサービスへアクセスしてリクエストしたリソースを取得するものであると理解できると思いますが、REST APIと言われるとRESTの意味がイマイチ分からないという方も多いかと思います。

 今回はそのRESTの意味合いを深掘りしていきたいと思います。

2.RESTとは何か

 RESTとは、Roy Fielding氏が2000年に発表した論文において定義したアーキテクチャスタイルのことです。彼は、Webの成功の要因は「REST」と名付けたこのアーキテクチャスタイル(システムを構成するための指針)であるとしました。

 RESTは「Representation State Transfer」の頭文字を取っており、HTTPはハイパーテキストを転送するプロトコルですが、実際には、ハイパーテキストだけでなくリソースの状態を運んでいるというのがFielding氏の主張でした。

 クライアント/サーバのアーキテクチャスタイルに加えて、複数のアーキテクチャスタイルを組み合わせて構築されたものでありますが、リンクを辿ることでアプリケーションを実現する分散ネットワークシステムとしてのアーキテクチャスタイルという側面もあります。

3.RESTの特徴

RESTの特徴は以下の6つです:

  1. クライアント/サーバ:単一のコンピュータ上で全てを処理せず、分離して処理することで、クライアントがPCに限らず、サーバはデータストレージとしての機能だけを提供することができます。
  2. ステートレスサーバ:サーバー側がアプリケーションの状態を管理しないことで、サーバの実装を簡略化でき、レスポンス後に計算機リソースを解放できます。
  3. キャッシュ:一度取得したリソースをクライアント側で使い回すことで、通信回数を減らし効率的に処理できます。
  4. 統一インタフェース:URIで指し示したリソースに対する操作を統一したインターフェースで行うことで、アーキテクチャがシンプルになり、クライアントとサーバの独立性が向上します。
  5. 階層化システム:ロードバランサーによる負荷分散やプロキシによるアクセスを制限するなど、階層化することが可能です。
  6. コードオンデマンド:プログラムコードをサーバからダウンロードし、クライアント側で実行することが可能です。

 これら全ての特徴を実装しないとRESTではないという訳ではありません。例えば、ステートレスに関しては、現状Cookieによるセッション管理を行なっているサービスは多数存在します。それではセッション管理を行なっているサービス全てがRESTという訳ではありません。

 RESTにおいて大切なのは、上記の6つの特徴を全てを網羅するということではなく、サービスによってRESTの要素を選択していくということがあります。

 今回は以上になります。最後まで閲覧くださりありがとうございました。

– 参考書籍 –

Webを支える技術 ―― HTTP,URI,HTML,そしてREST

Web API: The Good Parts

– 画像出典元 –

Business illustrations by Storyset

タイトルとURLをコピーしました