WebAPIの作成をするときに、RESTfulなEndPoint設計のベストプラクティスとしてBest Practices for Designing a Pragmatic RESTful APIなど参考にしたい思想がいくつかあります。翻訳はこちら1
そこで紹介されているCRUD2のエンドポイントは次のようになっています。
リソースが定義できたら、次はそれらに対してどんなアクションが必要で、また WebAPI 上でどのように表現されるかを考えます。REST の原則に従うと、HTTP メソッドを使った CRUD 操作は以下のように定義されます。
– GET /tickets – チケットのリストを取得する
翻訳: WebAPI 設計のベストプラクティス
– GET /tickets/12 – 指定したチケットの情報を取得する
– POST /tickets – 新しいチケットを作成する
– PUT /tickets/12 – チケット #12 を更新する
– PATCH /tickets/12 – チケット #12 を部分的に更新する
– DELETE /tickets/12 – チケット #12 を削除する
https://qiita.com/mserizawa/items/b833e407d89abd21ee72
これを参考に、Web サービスのエンドポイントURLも考えていけるといいのかな?と考えましたが、Web画面には画面ならではの「確認画面」「完了画面」などがあったりして、うまくまとまりません。
ですので、基本的なCRUDだけにとどめて、以下のようにまとめるといいかなと感じました。もしうまいことエンドポイントURLが思いつかない場合は、ぜひ参考にしてください。
※HTTPメソッドはGETとPOSTのみとします。
エンドポイントURL | method | メモ |
/tickets | GET | チケットのリストを表示する 一覧画面 だいたいパラメーターをたくさん受け取ると、検索絞り込みができる(GETパラメーターとして受け取る。絞り込み検索のフォームは、 <form method="GET" にする) |
/tickets/add | GET | チケットの新規登録画面を表示する |
/tickets/add/confirm | POST | チケットの新規登録の確認画面を表示する |
/tickets/add/complete | POST | チケットの新規登録の完了画面を表示する あるいは、画面はなくて /tickets にリダイレクトして「新規登録しました」メッセージを表示する |
/tickets/12 | GET | 指定したチケットの情報を表示する Laravel だったらルートモデル結合使うところ /tickets/{Ticket} |
/tickets/12/edit | GET | チケット #12 の編集画面を表示する |
/tickets/12/edit/confirm | POST | チケット #12 の編集の確認画面を表示する |
/tickets/12/edit/complete | POST | チケット #12 の編集の完了画面を表示する あるいは、画面はなくて /tickets にリダイレクトして「更新しました」メッセージを表示する |
/tickets/12/delete | GET | チケット #12 を本当に削除しますかー?という画面を表示する |
/tickets/12/delete | POST | チケット #12 を削除の完了画面を表示する あるいは、画面はなくて /tickets にリダイレクトして「#12を削除しました」メッセージを表示する |
Footnotes
- 翻訳: WebAPI 設計のベストプラクティス
https://qiita.com/mserizawa/items/b833e407d89abd21ee72 - 登録検索更新削除(Create/Read/Update/Delete)の頭文字