URLデザインに関する初心者のPlayFrameworkの質問:Playフレームワークにとってより慣用的なものを探していますが、これはある意味でより一般的なURLデザインの質問になる可能性があると思います。
これらは私の実際のエンティティではありませんが、次のようなもので編集できるコレクションがあるとします。
GET /collections/:id controllers.Collections.edit(id: Long)
POST /collections/:id controllers.Collections.update(id: Long)
POST /collections/:id/delete controllers.Collections.delete(id: Long)
そして今、各コレクションはアイテムを持つことができます。アイテムは独自のIDでデータベースにありますが、外部キー制約のある親コレクションのIDも持っています。
だから私はこれらを持っているのを見ることができました:
GET /collections/:collection/items controllers.Items.list(collection: Long)
GET /collections/:collection/items/new controllers.Items.create(collection: Long)
POST /collections/:collection/items controllers.Items.save(collection: Long)
しかし、既存の個々のアイテムを編集または削除して、アイテムIDだけでアイテムのコレクションIDを取得できるようにするには、次のようにします。
GET /items/:id controllers.Items.edit(id: Long)
POST /items/:id controllers.Items.update(id: Long)
POST /items/:id/delete controllers.Items.delete(id: Long)
または私は代わりにこのようなことをしたいですか?:
GET /collections/:collection/items/:id controllers.Items.edit(collection:Long, id: Long)
POST /collections/:collection/items/:id controllers.Items.update(collection:Long, id: Long)
POST /collections/:collection/items/:id/delete controllers.Items.delete(collection:Long, id: Long)
頭に浮かぶ考えの1つは、複合キーを使用した場合(良くも悪くも)はどうなるかということです。2番目のセットを使用して、現在のスキーマのアイテムIDのみが必要であるという事実からインターフェイスを分離する必要がありますか?それとも、その2番目のセットは完全に偽物で無駄ですか?理論的には、既存のアイテムに対して間違ったコレクションIDを持つURLを許可します(それを確認することはできますが、それでも)。
(上記ではより多くのRESTful PUT / DELETEを使用しますが、現時点では通常のHTMLフォームを使用していることに注意してください)
(これがFAQの場合は申し訳ありませんが、このようなものは実際には見つかりませんでした)