【初心者向け】REST APIについて学ぶ

キーボードで入力する手 IT関連

私は普段、Androidアプリの開発業務に携わっています。

ある日、サーバサイドの理解が浅いと思い、今回調べてみたことをまとめてみました。

基礎の基礎から、1つずつ理解していきましょう!

RESTとは

RESTは、英語で「REpresentational State Transfer」と書きます。

日本語に訳すると「代表的な情報転送」という意味になります。

要するに、デファクトスタンダード(広く普及した)となったWebインフラを活用して、Webサービスに簡単にアクセス可能にする仕組みのことです。

仕様ではなく、WebAPIの仕様を決めていく中で基本となる考え方(概念)にあたるので要注意。

RESTの設計思想

下記の4つの設計思想(考え方)で作られたインターフェースを「REST API」と呼びます。

HTTPリクエストを受け付けるインターフェースとなります。

Stateless

ステートレス。つまり、状態を持たないということ。

セッションなどの情報管理を行わず、通信の情報は単体で完結します。

要するに、個々のHTTPリクエストが完全に分離しているということです。

ステートレスとは、処理に必要な情報を一度に詰め込んでリクエストを投げること。

RESTのステートレス図解

ステートフルと逆で、自己完結型。

例:ステートレス「ハンバーガー、ポテトセットでドリンクはコーラ、おまけはサスケのフィギュア」
ステートフル「ハンバーガー」「セットは?」「ポテト」「ドリンクは?」「コーラ」「おまけは?」「サスケのやつ」

実社会では、ステートフルの方がいいですよね。

RESTのステートフル図解

前の情報(ステート・状態)を保持したまま会話(通信)が進んでいます。

Uniform Interface

「均一なインターフェース」という意味。

情報の操作は、HTTPメソッドで指定して実行します。

  • 取得(GET)
  • 作成(POST)
  • 更新(PUT)
  • 削除(DELETE)

データベースの操作「CRUD」と対比されることが多いです。

RESTのUniformInterface図解

※厳密にはPOSTはCRUDに対応していません。

Addressability

「アドレス指定能力」という意味の言葉。

全てのデータやリソースは、識別するための一意のURL定義を持っています。

アドレス指定可能なURIで公開されているということですね。

提供する全ての情報は、URIで表現される一意(1つしかない)なアドレスを保持します。

以下は、ウェザーニュースのAPIのひとつ。

東京の天気予報
東京の天気、週間天気。天気予報を進化させる気象サイト。毎日の生活から災害時まで、最多・最新・最速で、最適な気象情報をお届けします。全国200万人のウェザーリポーターからのお天気リポートにより、今の天気はもちろん、自然災害による生活への影響も、いち早くつかむことができます。このほか、桜・花火・紅葉・ゲレンデなどの季節情報...

こんな感じに、アドレス指定することができることを「Addressability」といいます。

Connectability

「接続性」という意味。

アプリケーションの「情報」と「状態遷移」の両方を扱えます。

単純に、あるリソースから他のリソースへのリンクを含めることができます。

まとめ

REST は以下のような決まり事から成り立っていることがわかりました。

  • Stateless
  • Uniform Interface
  • Addressability
  • Connectability

機能ではなく、概念なので様々な言語に適合することができます。

この概念を理解した上で、APIの作成を進めていけばRESTfullな設計ができるはずです。

参考文献

REST入門 基礎知識 - Qiita
REST入門 基礎知識 はじめに RESTサービスを開発するにあたって勉強したことをまとめました。RESTとはなんぞやというところについて書いていきます。実際の開発方法等については当記事では触れません。 RESTとは ...
アーキテクチャスタイル「REST」とは何か
RESTとは    続いて、RESTという考え方について見ていきましょう。RESTという言葉は、例えば「Amazonの商品情報取得APIであるECS(注2)では、SOAPとRESTのインターフェイスが用意されている」といった形で耳にした方も多いのではないでしょうか。この言い方を聞くと、RESTもSOAPと同じような...
REST APIやらODATA APIやらADOやらSwagger やらSOAP APIやらGraphQLやらgRPCやら。。。 - Qiita
API色々あるやないかい APIが色々種類あることを知り何がなんだかわからなくなるので整理メモ。間違いがあると思います。詳しい方ご指摘あったら遠慮なくお願いします。 概念的な部分にとどめているので詳しいAPIなどは書いていないで...

REST入門 基礎知識 - Qiita
REST入門 基礎知識 はじめに RESTサービスを開発するにあたって勉強したことをまとめました。RESTとはなんぞやというところについて書いていきます。実際の開発方法等については当記事では触れません。 RESTとは ...
ステートレスとは - Qiita
今回の学習テーマ ステートレスとは ##背景 RESTの4つの設計原則においてステートレスというキーワードが出てきて「何が違うんだろ。絶対ステートはフルのほうがいいでしょ」と気になったため。 Video / 書籍 以外で行ったこと...
タイトルとURLをコピーしました