目的
ユーザーのログインを禁止したい
少なくとも GET ではない
状態を変えるので。
POST ? PUT ? PATCH ? DELETE?
ユーザーのログインを禁止するのは、どんな方法だろうか。
- データベースでユーザーのレコードを更新してフラグを立てる (PATCH)
- データベースでユーザー以外のテーブルにログイン禁止のレコードを作る (POST)
- データベースでユーザーのレコードを削除する (DELETE)
- 何か他の方法で実現する ( ??? )
- ところでPUTのパターンは思いつかなかった。
実装方法によってメソッドを変えたら良いのだろうか?
仮にいちど PATCH で実装した後に、リファクタリングなどで別の実装に変えた場合は、APIのメソッドも変えたら良いのだろうか?
考え方
内部的な実装ではなくて、目的、意図、作用を考えてパスとメソッドを考えたらどうだろうか。
APIのパスとメソッドを見るだけで、何をするか
たとえばこの場合は「ユーザーのログインを禁止する」という「作用」のAPIエンドポイントなので
POST /v1/ user/deny
なんかはどうだろうか。
ユーザーのログイン禁止状態というリソースを「作成」するという意図で。
まだまだ RESTful API マスターへの道は遠い
RESTful 思想と言っても絶対的な黄金率があるわけじゃなくて、毎回、試行錯誤の必要があるのではないだろうか。
あくまで思想なので。いや、これって思想の名前なんでしたっけ? どうなんでしたっけ?
究極の答えを誰かが教えてくれると思ったら大間違えだ。
まだまだ RESTful API マスターへの道は遠い。
参考
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。