LoginSignup
0
0

REST API

Posted at

はじめに

これから本格的にRailsの学習の方に入っていくのですが、
その前にどうやらREST APIという概念を知っておかなくてはいけないようです。
なので今回はそのREST APIについての学習を記事にします。

REST APIとは

REST APIは一言で言うとRESTなAPIのことです。
RESTful APIとも呼ぶみたいですね。
これを理解するためにはRESTとAPIについて理解する必要があるので
以下それらについてまとめます。

REST

RESTはRepresentational State Transfer(分散型システムにおける設計原則群)の略で
webシステムを構築する際の設計思想です。
RESTには設計における原則が以下の6つがあります。

1.クライアント/サーバー
→ネットワークに繋いで使うアプリはほぼ全てこの構成だと思います。
 コンピュータやスマホのようなクライアントにサーバーから
 送信されたデータを表示し、サーバーはクライアントからこういうデータが欲しい
 というリクエストを受けてデータを生成しレスポンスとしてそのデータを返します。

2.ステートレス
→状態を保存しないという意味です。会話に例えると前に話した内容を相手が
 覚えていないということを前提でお話が進みます。
 相手に欲しいものを頼むときに最初「Aが欲しい。」と言った後に
 やっぱりBも欲しくなったときにステートレスであると以前の会話を
 覚えていないので「AとBが欲しい。」と言う必要があります。

3.キャッシュ制御
→クライアント側はサーバーからのレスポンスを明示的または暗黙的に
 キャッシュできます。適切にキャッシュを行うことで余計な通信が省けて
 ユーザーの体験の向上、リソース効率の向上、拡張性の向上につながる。
 ただ、デメリットとして古いデータを戻してしまうとデータの不整合が起きて
 信頼性の低下につながるので注意が必要です。
 
4.統一インターフェース
→「リソースの識別」、「表現を用いたリソース操作」、「自己記述メッセージ」、
 「HATEOAS」の4つの制約から成り立っています。
 「リソースの識別」はURIでサーバーに保存されたリソースを識別することを
  意味しています。 ここで言うリソースとはサーバーに保存されている
  名前がつけられているあらゆるデータのことです。
  「表現を用いたリソース操作」はクライアントに返されるレスポンスやサーバーへ
  POSTするデータなどの断面情報を用いてサーバー上のデータを
  操作することです。
 「自己記述メッセージ」はメッセージ内容がヘッダーに記述されていることです。
  自己記述とはデータ自身がデータの中身を説明していることで、
  メッセージとはクライアントとサーバーの間でやり取りされるデータを指します。
 「HATEOAS」は「Hypermedia as the Engine of Application State」の略で
  レスポンスの情報に現在の状態を踏まえたハイパーリンクを含めることです。
  webページにおける「次へ」ボタンなどがそれに当たります。

5.階層化システム
→各サーバーでAPサーバー、DBサーバーのように役割を分担させて
 進化と再利用をできるようにする構成です。しかし、一回の処理で様々な
 サーバーとの通信が発生(オーバーヘッド)してレスポンスが遅れてしまいます。
 これはキャッシュを利用すると改善が見込めます。

6.コードオンデマンド
→サーバーからソースコードをダウンロードしてきて
 クライアントでそれを実行することです。
 これによりサーバーのソースコードのみを変更するだけで機能の拡張ができ、
 後からの調整が容易になります。ただ、クライアントで実行するブラウザが
 それぞれで異なるためテストが面倒になります。

API

「Application Programming Interface」の略で外部のアプリケーションから
データや機能やデータを呼び出せるようにする規約です。
APIを利用することによってすでに世の中に公開されているAPIで
実装を効率よく進めることができます。

最後に

結論としてREST APIはRESTの原則に則って作られたAPIと言うことになります。
学習していて初耳のワードもたくさん出てきて最初は理解するのに苦労しました。
調べてみるとRESTというのはあくまで設計思想なので厳密にこうすべきみたい
なものってGAFAみたいな企業などがREST APIについてのガイドラインを作るまで
なかったようですね。まだ歴史が浅いITという世界ならではという感じがします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0