0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Restful API で GET / POST / PUT / PATCH / DELETE のメソッドや、パスの名前で迷う時の、考え方の、あくまで一例 ( #API #REST )

Last updated at Posted at 2020-02-21

目的

ユーザーのログインを禁止したい

少なくとも GET ではない

状態を変えるので。

POST ? PUT ? PATCH ? DELETE?

ユーザーのログインを禁止するのは、どんな方法だろうか。

  • データベースでユーザーのレコードを更新してフラグを立てる (PATCH)
  • データベースでユーザー以外のテーブルにログイン禁止のレコードを作る (POST)
  • データベースでユーザーのレコードを削除する (DELETE)
  • 何か他の方法で実現する ( ??? )
  • ところでPUTのパターンは思いつかなかった。

実装方法によってメソッドを変えたら良いのだろうか?

仮にいちど PATCH で実装した後に、リファクタリングなどで別の実装に変えた場合は、APIのメソッドも変えたら良いのだろうか?

考え方

内部的な実装ではなくて、目的、意図、作用を考えてパスとメソッドを考えたらどうだろうか。

APIのパスとメソッドを見るだけで、何をするか

たとえばこの場合は「ユーザーのログインを禁止する」という「作用」のAPIエンドポイントなので

POST /v1/ user/deny

なんかはどうだろうか。

ユーザーのログイン禁止状態というリソースを「作成」するという意図で。

まだまだ RESTful API マスターへの道は遠い

RESTful 思想と言っても絶対的な黄金率があるわけじゃなくて、毎回、試行錯誤の必要があるのではないだろうか。

あくまで思想なので。いや、これって思想の名前なんでしたっけ? どうなんでしたっけ?

究極の答えを誰かが教えてくれると思ったら大間違えだ。

まだまだ RESTful API マスターへの道は遠い。

参考

PatchとPutの違いについて - Qiita

Original by Github issue

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?