RESTful#とは勉強会6に参加してきた
自社で開催したときは会社のブログに投稿してましたが、今回はこちらに記録してみます。
勉強会概要
いつもは共同主催者としてお手伝いさせてもらっているのですが、4月はほんとにバタバタしていて、今回は完全に参加者側として参加させてもらいました。「最悪行けないかなぁ」とも思っていたのですが、たまたまこの日は余裕があったので本当に良かったです。
ちなみに当日のポイントと解説が書いてある川村さんの素敵なGistはこちらです。
読書会
Webを支える技術の第8章「ステータスコード」の所を読んでいきました。以前よちよち.rbのオンライン読書会で読んでいたところだったのですが、改めて見てみると疑問点とか出てくるもんですね。(忘れてるだけかも)川村さんのGistに載ってないところで特におもしろかった点を2つ。
リダイレクトについて
最近はあまり見ないけれど「5秒後にページが切り替わります」みたいなページ、ありますよね。あれってどうやって設定するんだろうって思ってたら、HTTP側の機能ではないということでした。
「何秒後にページが切り替わります」みたいなのは厳密には(HTTPとしての)リダイレクトではない。200とかでページ表示して、HTMLのmetaタグ側でやっているもの。HTTPで301とかあれば、基本的にはブラウザの仕様ですぐページが切り替わる #RESTudy
— ぷぽ (@pupupopo88) April 28, 2015
ちなみにHTML5だとこう書くみたいです。
<!-- 15秒後に http://www.example.com/ に飛ぶ --> <meta http-equiv="refresh" content="15; URL=http://www.example.com/">
401と403の違い
- 401(Unauthorized - アクセス権不正)
適切な認証情報を与えずにリクエストを行ったことを示します。
- 403(Forbidden)
401以外の理由でリソースを操作できないことを示します。たとえば特定のIPアドレスのみからアクセスできる場合などに用います。
んー...。これだけ見るとさっぱり分かりません。特定のIPアドレスのみから...ってそれも認証情報じゃないのかなと思ってしまいました。が、つまりはこういうことみたいです。
httpの認証方式(basic認証、OAuth認証、その他2つくらいしかない)ではじく場合は401、それ以外でフォーム入力とかでcookieに保存して認証とかするやつとかその他は403 #RESTudy
— ソエダユースケ (@soeda_jp) April 28, 2015
なるほど。
余談
- 402(Payment Required)
このリソースを操作するには料金が必要であることを示します。
402がネタとしておもしろすぎる件 「本貸してほしいんですけど」 「402」 「ごめん!これ手伝って!」 「402」 ちょう嫌われそう #RESTudy
— ぷぽ (@pupupopo88) April 28, 2015
いらんことで盛り上がってしまった。反省はしていない。
ワークショップ
今回ははてなブログを見ながら「どこがRESTfulか、どうしたらRESTの規約に近づけるか」などを話し合いました。
恐縮ながら私のブログでワークショップしてもらっております #RESTudy
— ぷぽ (@pupupopo88) April 28, 2015
今回は、一番大きなテーマとなったところをピックアップ。
階層構造のURLはリソースがあると期待させてしまう
日付を選択すると http://t.co/fLtC293B8k 記事を選択すると http://t.co/u7DvozhJub 日付選択すると同じ日に複数アップする場合もあるのでentries 記事自体は1つしかないのでentry。しかも投稿時間付き #RESTudy
— ぷぽ (@pupupopo88) April 28, 2015
たとえば http://pupupopo88.hatenablog.com/entries/2015/04/20 で2015年4月20日に投稿した記事が表示されると、「20を削除したら4月投稿した記事が全部取得出来るのでは」と考えてしまいがちです。しかし、実際にやってみると「Not Found」になってしまいました。因みに実際2015年4月に投稿した記事を取得したい場合は、「http://pupupopo88.hatenablog.com/archive/2015/4 」とするみたいです。本来なら、リダイレクトでもいいのでどちらでもアクセスできるようにしておいた方が親切ということでした。 関連して、末尾に / がある場合とない場合でアクセス出来ないものもあるので、そちらもどちらでもアクセスできるようにしておいた方が良いとのことでした。
/archive/yyyy は年単位の一覧が出る /archive/yyyy/ はNot Found RESTfulかどうかに入るかどうかは置いといてうーん #RESTudy
— ソエダユースケ (@soeda_jp) April 28, 2015
余談
RESTの観点ではてブロを見ていたのですが、半分「仕様確認」みたいになっていました。いろんなところでiframe使っていたりとちょっと分からない仕様も多々あり「大きなサービスを長年続けていると出てくるつらみ」みたいなのが垣間見えました。以前自分が携わってたものとか思い出して、開発者の苦労を思いなんだか胸が痛かったです(´-ω-`)笑 はてなのみなさま、応援しておりますのでこれからも素敵なサービスをお願いいたします(深謝)
懇親会
後ろ髪を引かれつつ、今回は懇親会に参加せず帰路につきました。ビールテロには震えましたが、おかげさまでゆっくり休めました。また次は元気に参加できたら良いなと思います。
関係者の皆様、本当にお疲れさまでした&ありがとうございました。また次はいろいろお手伝いできたらいいな〜。