WebサービスのエンドポイントURL(ルーティング)の設計案

吹き出すスモーク フリー素材ぱくたそ(www.pakutaso.com)
  • URLをコピーしました!

WebAPIの作成をするときに、RESTfulなEndPoint設計のベストプラクティスとしてBest Practices for Designing a Pragmatic RESTful APIなど参考にしたい思想がいくつかあります。翻訳はこちら1

そこで紹介されているCRUD2のエンドポイントは次のようになっています。

リソースが定義できたら、次はそれらに対してどんなアクションが必要で、また WebAPI 上でどのように表現されるかを考えます。REST の原則に従うと、HTTP メソッドを使った CRUD 操作は以下のように定義されます。

– GET /tickets – チケットのリストを取得する
– GET /tickets/12 – 指定したチケットの情報を取得する
– POST /tickets – 新しいチケットを作成する
– PUT /tickets/12 – チケット #12 を更新する
– PATCH /tickets/12 – チケット #12 を部分的に更新する
– DELETE /tickets/12 – チケット #12 を削除する

翻訳: WebAPI 設計のベストプラクティス
https://qiita.com/mserizawa/items/b833e407d89abd21ee72

これを参考に、Web サービスのエンドポイントURLも考えていけるといいのかな?と考えましたが、Web画面には画面ならではの「確認画面」「完了画面」などがあったりして、うまくまとまりません。

ですので、基本的なCRUDだけにとどめて、以下のようにまとめるといいかなと感じました。もしうまいことエンドポイントURLが思いつかない場合は、ぜひ参考にしてください。

※HTTPメソッドはGETとPOSTのみとします。

エンドポイントURLmethodメモ
/ticketsGETチケットのリストを表示する
一覧画面
だいたいパラメーターをたくさん受け取ると、検索絞り込みができる(GETパラメーターとして受け取る。絞り込み検索のフォームは、 <form method="GET" にする)
/tickets/addGETチケットの新規登録画面を表示する
/tickets/add/confirmPOSTチケットの新規登録の確認画面を表示する
/tickets/add/completePOSTチケットの新規登録の完了画面を表示する
あるいは、画面はなくて /tickets にリダイレクトして「新規登録しました」メッセージを表示する
/tickets/12GET指定したチケットの情報を表示する
Laravel だったらルートモデル結合使うところ
/tickets/{Ticket}
/tickets/12/editGETチケット #12 の編集画面を表示する
/tickets/12/edit/confirmPOSTチケット #12 の編集の確認画面を表示する
/tickets/12/edit/completePOSTチケット #12 の編集の完了画面を表示する
あるいは、画面はなくて /tickets にリダイレクトして「更新しました」メッセージを表示する
/tickets/12/deleteGETチケット #12 を本当に削除しますかー?という画面を表示する
/tickets/12/deletePOSTチケット #12 を削除の完了画面を表示する
あるいは、画面はなくて /tickets にリダイレクトして「#12を削除しました」メッセージを表示する
CRUDに対応したWebサービスのエンドポイントURLの設計案

Footnotes

  1. 翻訳: WebAPI 設計のベストプラクティス
    https://qiita.com/mserizawa/items/b833e407d89abd21ee72
  2. 登録検索更新削除(Create/Read/Update/Delete)の頭文字

ツチノコテクノロジーでは一緒に働く仲間を募集しています!

完全リモートで働きたい方へ!

詳しくは以下をご覧ください。

ツチノコテクノロジー採用サイト

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ツチノコテックアカデミアの記事は、社内で誰かが質問してくれたことに回答したときに、ついでに記載しています!(^^)/
みんなの悩みを共有すれば、きっと誰かの役に立つと信じて更新しています!

目次