表題にもあります通りREST APIについて調べてみました。
web関係の仕事に携わるために勉強している人は設計モデルについてしっかりと理解することが大切だと感じました。
##そもそもRESTとは
REST(REpresentational State Transfer)はWebサービスの設計モデルです。
RESTは設計に際し以下を設計原則とするよう提言しています。
-
アドレス指定可能なURIで公開されていること
提供する情報がURIを通して表現できること。全ての情報はURIで表現される一意なアドレスを持っていること。 -
インターフェース(HTTPメソッドの利用)の統一がされていること
情報の操作は全てHTTPメソッド(GET、POST、PUT、DELETE)を利用すること。 -
ステートレスであること
ステートとは「状態」を意味します。よってステートレスは「状態がない」という意味になります。ステートレスなやり取りにおいてサーバーはクライアントのセッション情報を保持しません。逆にステートフルなやり取りにおいてはセッション情報が保持される。
※ステートレスについて下記の記事がとても分かりやすかったです。
https://qiita.com/mtakehara21/items/efcbbc3ba58a62c10eb6 -
処理結果がHTTPステータスコードで通知されること
ステータスコードはWebサーバーからのレスポンスを表すコードです。RESTはHTTPメソッドを利用しているのでHTTPステータスコードをその結果として返却します。
###REST APIとは?
上記のRESTの設計原則に則って構築されたWebシステムのHTTPでの呼び出しインターフェースのこと。
http://hoge.com/api/post1/getpost
http://hoge.com/api/post1/newpost
http://hoge.com/api/post1/updatpost
http://hoge.com/api/post1/deletepost
上の例であれば、RESTの考え方に基づいて考えるとよくない設計です。
正しくは以下のようなURLになります。
http://hoge.com/api/post1/postinfo
これでは削除なのか投稿なのかが判別出来ません。
そこで登場するのがHTTPメソッド(GET、POST、PUT、DELETE)になります。
先の例ではURLが4つ存在していましたがpost情報を扱うAPIに対して一つにURLで対応することが出来ます。
参考記事