「REST API」とは何なのか?について今回は書いていきます。
まずはじめにざっくり簡単にいうと「web通信のAPI」。
RESTとは「REpresentational State Transfer」
リプレゼンテーションというのは、形を備えているという意味。 ステートは状態。トランスファーは運ぶ。
APIは、アプリケーションプログラミングインターフェイス。
なぜ調べようとおもったか?
webサイト作成の際にエンジニアの先輩から、「レストAPIって何か知ってる?」と言われ答えられなかった為。
webサイトやサービスの通信に関わることなので言葉だけでも知っておく必要があると思いました。
初心者には少し難しいしちゃんと理解している人も少ないと言ってました。
REST APIとはどんなものか?
一人ひとりが作る個別のwebサービスやWebAPIでも、RESTの約束を守る事が重要
RESTは複数のアーキテクチャを組み合わせて構築した複合のアーキテクチャスタイル
この複数のアーキテクチャスタイルにFoeldingさんが「REST」と名前をつけたのがはじまりです。
※アーキテクチャとは仕様や様式のことです。
元は「Uniform Layered Code on Demand Client Cache Stateless Sever : ULCODC$SS」と呼ばれ覚えにくい名前でしたがRESTとなりました。
決まりは6つ
①クライアント・サーバ Client
一つのコンピューターから複数のサーバを組み合わせることで一つの端末がマルチプラットフォームとなる。可用性(耐障害)も上がる。
②ステートレスサーバ Stateless Sever
アプリケーションの状態を管理しない。
※ステートフルとはやり取りを覚えている。簡潔的で日常会話に近い。セッション状態を維持している必要がある。クライアントが増えるとスケールアウト(処理能力が低下)する。CookieはHTTPをステートフルにするセッション管理。
※ステートレスとはやり取りを毎回前回の事を繰り返す。冗長的。送信のデータ量はフルに比べて多くなる。アクセスを毎回しないといけないので重い処理となる。
③キャッシュ Cache
リソースをクライアント側で使い回すこと
メリット。サーバの通信量を減らしたり、ネットワーク帯域の利用や処理時間を縮小し効率的に処理を行える。
デメリット。古いキャッシュを利用してしまい、情報の信頼度が下がる。
④統一インターフェース Uniform
HTTP1.1ではURIのリソースに対する操作を8個のメソッドで統一
全体の仕様がシンプルとなる。
RESTを特徴づけている
⑤階層化システム Layered
サーバーやプロキシサーバーのインターフェースをHTTPで統一しているため、接続先がかわっても意識する必要がない。
インターフェースの異なるシステムでも間にHTTPのシステムをもたせることで、クライアントと接続することが出来る。
複数の階層に分離する事を階層化システムと呼ぶ
⑥コードオンデマンド Code on Demand
プログラムコードをサーバからダウンロードしてクライアント側で実行
新しい機能を追加していける
HTTPでの通信でわかりずらくなりリソースが不明瞭となる。
他には
自分で作成し公開する事も可能。
RESTfullとはRESTの制約に従っていてRESTらしい事をRESTfullと呼ぶ。
例えていうなら
オートバックスには、車のカスタムパーツが売っています。
それを買って自分の車に取り付けるとカスタムが出来ると思います。
RESTAPIもサイトのカスタムに使われるもので、
Webサイトで言うと大手のサイトにはサイトのカスタムパーツが掲載されています。
開発者用のページにはいろいろな機能APIが容易されていてその中の通信のAPIを提供しているのがRESTになります。
FacebookやTwitter、ワードプレスなど大手サイトは必ずといっていいほど公開しています。
まとめ
今回は「REST API」について書かせて頂きました。
なぜRESTAPIを公開しているのかと個人的に考えてみたのですが、
各々のWebサイトやサービスで通信量やmainとなる機能も変わるので、それに対応したRESTが必要だと考えました。
なせ公開をしているのかは、開発の参考にしたり使ってもらうことで自社のサービスを広められたり技術革新にも繋がるのではないかと考察しました。
今回のまとめが内容は自分なりにまとめたので、間違っている部分もあると思いますが、誰かの参考になれば幸いです。
下記の参考書籍はREST APIについてネット上よりも詳しく書いてあったのでオススメ致します。
参考書籍
最後までお読み頂きありがとうございました。
駆け出しエンジニアけいこ♂
コメント