こんにちは、バックエンドチームの中嶋です。
まだ入社して2ヶ月ほどですが、先日にWeb技術の勉強会の機会を頂き「REST API」についてLTを行ったので、簡単に内容をまとめていきたいと思います。
あくまで基本的な概念をざっくりと理解する、初学者向けの内容です!
それでは順番にみていきましょう〜。
まずはRESTを知る
REST APIの前にそもそも「REST」とは何かというと、「シンプルなWebシステムの設計思想」のことです。
これは「REpresentational State Transfer」
(リプレゼンテーショナル・ステイト・トランスファー)
の略で、
- Representational →具象化された
- State →状態の
- Transfer →転送
つまり、ざっくりと理解すると
「具体的に状態を定義した情報のやり取り」
のような意味合いになります。
これについて「RESTの4原則」というものがあり、これを満たすものを「RESTfulなシステム」と呼んだりします。
RESTの4原則とは?
このRESTの4原則は、
HTTPを設計した中心人物であるRoy Fielding氏が2000年に提唱したもので、
①統一インターフェース
②アドレス可能性
③接続性
④ステートレス性
の4つです。
順番に見ていきましょう。
①統一インターフェース
統一インターフェースは、あらかじめ定義・共有された方法でやり取りされることです。
Webの場合、例えば「GET・POST・PUT・DELETE等のHTTPメソッドでやりとりするよ~」とか「やり取りするデータはJSON形式にしようね〜」といったものになります。
データの形式にはXML等もありますが、近年は軽量なJSON形式が使われることが多いです。
②アドレス可能性
アドレス可能性は、全ての情報が一意なURI(識別子)を持っていて、提供する情報をURIで表現できることです。
このURIはUniformed Resource Identifierの略で、Webの場合は通常URLで与えられます。
③接続性
接続性は、やりとりされる情報にはハイパーリンクを含めることができる、というものです。
1つのリンクから別の情報にリンク(接続)することができて、RESTfulなシステム同士なら円滑に情報連携を行うことができます。
④ステートレス性
ステートとは「状態」のことでしたね。これがレスなので「状態がない」ということになります。
つまり、RESTでは「やりとりが1回ごとに完結する」と理解することができます。
これは、前のやり取りの結果に影響を受けないのでシンプルな設計にできるというメリットがあります。(セッション管理が不要など)
WebにおけるRESTの4原則を図にすると..
あくまでひとつの例ではありますが、こんな感じでイメージできると思います。
①HTTP通信で,JSON形式でやりとりするよ →統一インターフェース
②このURLの情報くださーい →アドレス可能性
③ハイパーリンクを含んだページをあげるよ →接続性
④さっきの情報をくださいと言われても〜 →ステートレス性
じゃあ本題のREST APIとは??
「REST」についてざっくりと理解したところで、本題のREST APIについて見ていきま しょう。
まずAPIとはApplication Programing Interfaceの略で、ざっくりと、「プログラムの情報をやり取りする蛇口のようなもの」と理解することができます。
そして「REST API」とは先ほどのRESTの4原則に則ったAPIのことです。
ちなみに..
RESTful APIとREST APIは呼び方の違いで意味はほぼ同じ。
またWeb分野では単にWeb APIと呼ぶこともある。
外部APIを使うイメージ
例えばのイメージですが、天気予報サイトの外部APIを使う場合の図です。
・中央のポータルサイトが例えばYahoo!のようなサイトで、ユーザーは住んでいる地域を登録しています。
・この地域情報を天気予報のAPIサーバーに渡して、その地域の天気の情報を検索して返します。
・スマホアプリなども登録情報から同様に活用されます。
ざっくりと、こんな感じのイメージです。
ちなみにREST以外には..?
REST以外のものとしては、2000年代初頭までは標準化として「XML-RPC」や「SOAP」というものが使われていました。
しかし形式をXMLに限定していたり仕様が複雑だったりで、あまり広く普及するには至らなかったという背景があり、現在ではSOAPに代わり今回紹介したRESTが中心になっています。
なお「REST」は標準化ではなくあくまで設計思想なので、この点は留意しておきたいところです。
今回のまとめ
・RESTは「RESTの4原則に沿ったシンプルな設計思想」のことで、
①統一インターフェース
②アドレス可能性
③接続性
④ステートレス性
の4つ。
・これらに沿ったシステムを「RESTfulなシステム」という。
・「REST API」と「RESTful API」は、呼び方の違いだけと思って良い。
・「REST」はRPCやSOAPと違って「標準化」ではないが、現代の主流の設計思想である。
参考文献
「イラスト図解式 この一冊で全部わかるWeb技術の基本」
以上、最後までお読み頂きありがとうございました〜!
Wizではエンジニアとして一緒に働く仲間を絶賛募集しております。
ご興味のある方、是非ご覧下さい..!!