こんにちは、mi2yo4です。
最近になって「REST」という言葉に触れる事が多くなってきました。
(何を今さら、という感もありますが…)
しかしRESTについて、自分の中では「ふわっ」とした、何となく理解したようなしていないような、そんな感じでしたので少し勉強し直してみる事にしました。
あぐりログのWebAPIをどうするか
RESTというキーワードについて、キチンと勉強しようと思った直接的な原因を挙げるとすれば、それはこれからの「あぐりログ」のWebAPIをどうするか?という事が発端だと思います。
現在の仕組みでも、あぐりログはWebブラウザ上からあぐりログサーバに「計測データを頂戴」とメッセージを投げて計測データを貰っています。
で、そのデータをブラウザ上で組み立ててユーザーの目に見える形で表示しています。
ただ、Webブラウザ(クライアント)とWebサーバ間のインターフェースが理論整然と取り決めされているか・分かりやすいか、と言われれば「まだまだそこまで行っていない」というのが正直な所です。
将来的にはあんなこんなそんな外部サービスとも連携してキャッキャウフフするためには、この辺りを理解しておきたい所です。
RESTを解説している情報源
RESTとは何ぞや?という事を学習するために情報源を色々と探してみようかと思ったのですが、まとまった資料というのはあまり見つかりませんでした。
REST 入門
書籍で欲しいと思ったので、自分はこちらの本を購入してみました。Web上の情報では体系だった形になっているものは少ないので、やはり書籍で勉強したいですね。
とりあえず分かったこと
URI(リソースの識別名)は名詞ベースであること
例えば、何かしらの編集ページにアクセスする場合、これまでのやり方であれば下のようになっているかと思います。
http://itz.sample.jp/wp-admin/post.php?post=35423&action=edit
RESTアーキテクチャに従うとすると下のような形になりますね。
http://itz.sample.jp/article/35423
上に比べると下のURLは随分とシンプルに、そして動詞が含まれていません。動詞にあたる処理は下に書いたHTTPメソッドで定義するようです。
HTTPメソッドを使い分ける
従来のやり方
GET/POST
RESTアーキテクチャ
GET/POST/PUT/DELETE
APIにアクセスする際のHTTPメソッドは、従来ではGETかPOSTしか使われていない場合が殆どでした。
歴史的経緯からHTMLのフォームがGET/POSTしかサポートしていなかった事が大きいのだと思われます。
RESTではGET(データ取得)/POST(データ作成)/PUT(データ更新)/DELETE(データ削除)とメソッドを明確に区別して処理を行います。
その他
各HTTPメソッドの安全性、べき等性を満たしているか等々…
(参照)http://labo.mamezou.com/special/sp_013/sp_013_001.html
まとめ
WebAPIに関しては、これまで「こうするべき」という指針が無かったため、統一感のあるインターフェースを構築しづらい所がありました。
今回のRESTアーキテクチャという考え方に沿えば一貫性のあるインターフェースを早期に構築できそうな気がしてきました。
RESTという考え方、いわばコードを書く際にある種の「枷、ルール」を付けています。
普通であればそれが制限となってしまうのですが、逆にそれがあるためにより自由に素早くコードが書け、ひいてはサービスを素早く生み出す原動力となりそうです。
何だか不思議で面白いですね。
ではまた!