RESTful APIとは?RESTの6原則とメリット・デメリットを解説!

RESTful APIを聞いたことがあるものの、

・RESTfulがようなものかよくわからない…。
・RESTの原則について詳しく知りたい…。

という方も多いのではないでしょうか。そこでこの記事では、

・RESTの6つの原則
・RESTful APIのメリット・デメリット

について解説します。

この記事を読めば、RESTful APIについての理解を深め、開発業務に活かすことが可能です。

RESTful APIとは

RESTful APIは、RESTの原則に従って設計されたAPIのことです。複数のコンピュータが通信しあう分散型システムにおいて、アプリケーションを連携させる用途に適しています。RESTful APIは「REST API」と呼ばれることもあります。

RESTful APIとは

RESTは、「Representational State Transfer」の略称で、Webサービスの設計に関する原則的な考え方を指す用語です。ロイ・フィールディング氏が2000年に発表した論文の中で、RESTの概念が提唱されました。

APIとは「Application Programming Interface」の略称で、複数のソフトウェアやWebサービスをつなぐ窓口のような役割を持つ規格のことです。

「RESTful」は、RESTと「~を満たす」という意味の「ful」を組み合わせた用語です。RESTに含まれている制約を満たすようなAPIが、RESTful APIと呼ばれます。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

RESTの6つの原則

RESTには、Webサービス設計に関する制約として、次に挙げる6つの原則が定められています。

  • クライントとサーバーの分離(Client-Server)
  • ステートレス(Stateless)
  • 接続性(Connectability)
  • 統一インターフェース(Uniform interface)
  • アドレス可能性(Addressability)
  • オンデマンドのコード(Code-On-Demand)

ここからはそれぞれの原則について詳しく説明します。

クライアントとサーバーの分離(Client-Server)

Webサービスなどのアプリケーションは「クライアント」、「サーバー」、「リソース」で構成されることが一般的です。クライアントは、ユーザーによる操作などのリクエストをサーバーに送信します。そして、サーバーはリクエストを受け取り、拒否や実行などの結果をクライアントに返します。リソースとは、システムで取り扱うデータを指すものです。

これらの仕組みの中で、RESTではクライアントとサーバーが互いに独立し、完全に分離していることが求められます。

クライアントとサーバーの分離(Client-Server

ステートレス(Stateless)

ステートレスとは、セッションなどの状態管理をサーバー側で行わない通信規格のことです。処理に必要な情報は全てクライアント側からのリクエストに含まれるため、サーバー側で余分な情報を持つ必要がなく、シンプルな設計となります。

接続性(Connectability)

接続性とは、APIでやり取りする情報の内部に、別の情報へのリンクを含められるという原則です。

RESTの原則に従って設計されたシステム同士であれば、情報を円滑に連携できます。

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

統一インターフェースとは、情報をやり取りするための命令体系があらかじめ定義されていることを指します。

RESTful APIでは、リソースに対して適用できる情報操作として、HTTPのプロトコルで定義されている次のようなメソッドの利用が可能です。

メソッド 操作の内容
GET サーバーから情報を取得する
POST サーバーにデータを送信する
PUT サーバー上のリソースを更新、または作成する
DELETE サーバー上のリソースを削除する

アドレス可能性(Addressability)

アドレス可能性とは、取り扱う全てのリソースが一意な識別子(URI:Uniform Resource Identifier)で表現されることです。Web上で動作するシステムの場合、識別子は基本的にURLで与えられます。

RESTful APIでは、URLを一目見て何の情報にアクセスしているかわかる状態が理想的です。例えば、商品データを扱うシステムで、食品のカテゴリを指すURLには「category=foods」というパラメーターを含めるといった実装方法が考えられます。

オンデマンドのコード(Code-On-Demand)

オンデマンドのコードとは、プログラムコードをサーバーからダウンロードし、クライアント側で実行する構造のことです。必要に応じてプログラムコードを取得することで、クライアントの機能を一時的に拡張、カスタマイズすることが可能です。

ただし、プログラムコードの取得や実行によってクライアントの挙動が変化すると、ネットワーク通信が複雑になり、プロトコルの可視性が低下するという制約があります。そのため、必ずしもこの原則を盛り込む必要はありません。

RESTful APIのメリット

RESTful APIを利用すると、Webサービスなどの機能を開発する上で、開発者とユーザーの双方にメリットがあります。RESTful APIの主なメリットは次の通りです。

リソースの可視性が向上する

RESTful APIは、アドレス可能性の原則に従って実装されるため、リソースの可視性が高まります。

APIの開発者は、一定の規則に沿ってURIを決めることが可能です。また、APIの利用者はURIを見るだけで、どのようなリソースを扱っているかを簡単に把握できます。

スケーラビリティが向上する

RESTful APIは、クライアントとサーバーが分離しているため、それぞれ独立して開発でき、機能の拡張が容易です。

また、RESTful APIで実装したシステムの需要が増えた場合、サーバーを追加してリクエストの負荷を分散することもできます。スケーラビリティを向上させられることが、RESTful APIを利用するメリットです。

スケーラビリティが向上する

柔軟性が向上する

RESTful APIでは、クライアントとサーバーが分離されているだけでなく、各アプリケーション機能の階層化も行われています。階層化とは似たような機能やリソースを同じレイヤーにまとめて、整理された構造で扱うことです。

RESTful APIを利用する開発者は、機能の部分的な修正や入れ替えといったカスタマイズを柔軟に行うことができます。

RESTful APIのデメリット

RESTful APIにはデメリットもあるため、利用する際に理解しておくことが重要です。ここでは、RESTful APIの主なデメリットについて解説します。

パフォーマンス低下のおそれがある

階層化された複数のシステム間でデータがやりとりされる場合、リクエストからレスポンスまでに必要な処理が増え、返答までの時間が長くなる可能性があります。

また、ステートレスの原則に従うRESTful APIでは状態を保持する機能がありません。そのため、処理を行う際にリクエストの送信が繰り返され、ネットワークのパフォーマンスが低下する場合があります。

実装者によりばらつきが生じやすい

RESTful APIであるからといって、必ずしも統一された設計であるとは限りません。RESTはシステム設計の細かな点まで規定したものではなく、あくまでも原則的に従うべき制約をまとめた考え方です。そのため、実装者によってRESTの設計思想に対する解釈が異なり、APIの実装や設計にばらつきが生じる可能性があります。

RESTful APIを利用する際にはRESTの原則を十分理解した上で、開発に取り組むことが重要となります。

RESTful APIを学んでWeb開発を効率化しよう!

RESTful APIはRESTの原則に基づいて設計されたAPIで、クライアントとサーバーが分離していることや、ステートレスであることなどが特徴です。

RESTful APIを用いるとリソースの可視性やスケーラビリティ、開発の柔軟性が高まります。一方、パフォーマンスの低下や実装者によるばらつきが生じやすい点には注意が必要です。RESTの6つの原則について理解した上で、RESTful APIによる開発に取り組みましょう!

RESTful APIを用いた具体的な開発手順を学びたい方には、下記の講座がおすすめです。

Udemyおすすめ講座

【Django中級編】Django: RESTful APIとGraphQLの実践API開発マスター講座

【Django中級編】Django: RESTful APIとGraphQLの実践API開発マスター講座

4.6(10 件の評価)

235 人の受験生

作成者: NAOKI MATSUMOTO(Linux,Java,PHP,Python,Django,Tensorflow,機械学習,SQL)

Djangoで学ぶAPI開発の基本: Restful APIとGraphQLを活用して、データの取得や操作の実践、フィルタリング、JWTトークン認証処理から単体テストまで実務で必要な知識を詳細に解説します

\無料でプレビューをチェック!/

講座を見てみる

評価:★★★★★
コメント:「Django: RESTful APIとGraphQLの実践API開発マスター講座」という講座名のとおり、API開発において実践的な内容をじっくり学ぶことができました。

Restful APIへの理解を深め、実践的なサーバサイドのAPI作成スキルを身につけましょう。