ユーザブロック関連のAPIを作る

ブロックリスト取得

パターン①

GET /users/#ID#/blocking/

パターン②

GET /blocking/

基本的にブロックリストって自分自身しかアクセスしないわけだから
パターン②がベストなのかなー。


ブロックリストに追加

パターン①

POST /users/#ID#/blocking/

user_id = #ブロックするユーザID#

パターン②

POST /blocking/#ブロックするユーザID#

パターン③

POST /blocking/

user_id = #ブロックするユーザID#


ブロックリストって基本的には、自分自身しか取得も追加も削除も出来ないんだから取得も追加もパターン②がシンプルなのかな〜
って思ってたら、下の記事を見つけた

認証が必要な URI は、認証した人から見た URI になるように設計するほうがよい

同じリソースを表す URI はいくつあっても構わず、唯一の URI である必要はないというのが REST の考え方ですので、どういうふうに URI を設計してもよいとは思います。

が、僕の経験上ですが、上のような認証が必要なリソースを表す URI は、認証した人から見た URI として設計するのがよいです。

こうしておくと何が良いかというと、セキュリティを保ったままコードがきれいに書けることが多いからです。

[REST] 認証が必要な API を REST っぽく作るときのメモ - それはBlog


という訳で、

取得:パターン②
追加:パターン②

で実装しようと思う。