HATEOSおもしろそう

単純なRESTfulだと、どこに何があって、何をするにはどこを見るべきかをクライアントが知っている必要がある。
だけどネットサーフィンなら、何があるか何ができるかは行けばわかるよね。というのをAPIで再現した感じ。

この項目は書きかけの項目です。加筆、訂正などをする時間を求めています。

link

リソース間の関係をサーバー側から示す。ある状態でのみ有効な遷移なんかも表せる。

<link href="http://..." method="get/post/..." rel="元リソースとの関係" type="hrefが示すリソースのMediaType" />

今何ができるかを示すという点ではOPTIONSメソッドも重要。編集不可フラグが立ったらGET以外禁止するとか。

MediaType

そのリソースが何を表すのかを示せるように。application/vnd.xxxが自由に使える。
使いどころはリクエストのAccept、レスポンスのContent-Type、linkのtype、など。

<link href="http://..." rel="Father" type="application/vnd.hogehoge.user" />
<link href="http://..." rel="Mother" type="application/vnd.hogehoge.user" />
<link href="http://..." rel="Family" type="application/vnd.hogehoge.family" />

Tips

  • APIのバージョニングはどうするの?
    • リソースのURIを分散させたくないから、/v1/user/みたいにURIに含めるのはないよねー。
    • MediaTypeに含める(application/vnd.hogehoge.user-v1)とか、MediaTypeの属性にする(application/vnd.hogehoge.user; v=1)とか。