マッスル・メモリー

筋肉エンジニアのブログ

webを支える技術 REST

去年読み始めたwebを支える技術でしたが、途中で放置していました。
今年は違うぞということで、ここ2週間くらいで改めて最初から最後まで読み通しましたので、そのアウトプットとして今回記事を書こうと思います!

今回はRESTについてです!!

この記事を読んでわかること

  • RESTとはなんであるか。RESTを構成するアーキテクスチャスタイルについて。

REST

RESTは複数のアーキテクチャスタイルを組み合わせた複合アーキテクチャスタイル。
アーキテクチャスタイルと言う言葉がいまいちピンとかなかったけど、調べてたら設計思想というのがなんとなくしっくりきました。

リソース

リソースについては過去の記事で書いてありますので、そちらを!

HTTPとは - バグですか?仕様ですか?筋肉です💪

RESTを構成するアーキテクチャスタイル

クライアント/サーバ

クライアント側とサーバ側で分けることでつまり、ユーザーインターフェースと処理を分けることです。
これによりwebにpc以外でアクセスすることができます。また、複数のサーバを組み合わせることで可用性(システムが継続して稼働できる能力)を上げられます。

ステートレスサーバ

クライアントのアプリケーションの状態をサーバ側で管理しないことです。そうすることでサーバの実装を簡略化できます。ただcookieはステートフルなものです。 ↓過去に例を交えながら説明しています!

HTTPとは - バグですか?仕様ですか?筋肉です💪

キャッシュ

一度取得したリソースをクライアント側で使い回すことです。
何度も通信をしないで済むが、古いキャッシュにより情報が間違っているかもしれないので注意です。

統一インターフェース

URIで指し示したリソースに対する操作を統一したインタフェースで行うことです。
分かりづらいので例を上げるとHTTPは8つのメソッドだけしかありません。少なすぎて使い勝手が悪いように思われるかもしれませんが、これにより対応しなくてはいけないものが少なくなり、結果としてシンプルにすることができます。

階層化システム

サーバとクライアントの間に負荷を分散してくれるロードバランサを置いたり、アクセスを制限してくれるプロキシを置いたりすることです。
これは統一インターフェース(インターフェースをHTTPで統一)のおかげです。

コードオンデマンド

プログラムをクライアントにダウンロードして実行することです。例えばJavaScriptなどがあげられます。

最後に

以上、今回はRESTについてまとめてみました! RESTってよく聞くけど、それってどういうものなの?っていうのが今まで曖昧でしたが、改めて理解することができました。

私は、業務で主にRubyrails扱っています。railsは便利なので、webのことを理解していなくてもなんとなく書けてしまうのですが、このwebを支える技術を読んで、URIやHTTPを理解してから、このリソースを更新したいからここにリクエストをしないといけないんだなとか、ルーティングはこう書かないとなとかがわかるようになりました。

本を読むだとか、アウトプットをするということを続けるのは大変ですが、仕事に直結しますし自分をより良くすること、(つまり筋トレと同じ)なので今後も続けて行きたいと思います!!(^∀^)ᕗ