1

コメント付きの写真の典型的なネストされたリソースを考えると、コメントを作成するルートは次のようになります。

POST /photos/{photo_id}/comments

さて、コメントを削除するために、「ネストされた」ルートを引き続き使用しますか? 元:

DELETE /photos/{photo_id}/comments/{comment_id}

また

DELETE /comments/{comment_id}

ネストされたルートの長所は、作成 URL をミラーリングし、routes.rb に追加のエントリを必要としないことです。トップレベル URL を使用するメリットは、削除するコメントを取得するために技術的に photo_id を必要としないことです。

考え?

4

3 に答える 3

3

リソースをどのようにモデルcomments化するかは、リソースをどのように見るかによって大きく異なりますcomments

コメントが写真なしで存在する可能性があり、0 から N 個のリソースに関連付けられる可能性がある場合、photo次のようにコメントをモデル化する必要があります

GET    /comments/{comment_id}
DELETE /comments/{comment_id}

PUT    /comments/

POST   /comments/{comment_id}/associations/photo/{photo_id}

コメントが常にリソースに関連付けられており、リソースに関連付けられていないと存在できない場合は、そのままにしておく必要があります

POST   /photos/{photo_id}/comments

DELETE /photos/{photo_id}/comments/{comment_id}

コメントをモデル化する方法の混乱は、すべてのコメントがすべてのコメント間で一意でありphoto_idcomment_id結合されたキーで一意であるだけでなく、一意の ID を取得するデータベース モデルによって引き起こされると思います。データベース モデルがリソース モデルに漏れないようにして、リソースの概念的な理解に合ったモデルを選択することをお勧めします。

于 2012-11-14T07:07:13.310 に答える
2

これできますGETか?

GET /comments/{comment_id}

ないと思います。しかしGET、リソースを取得できない場合は、リソースも取得できませDELETEん。

したがって、2 番目のオプションは RESTful のみです。

于 2012-11-10T19:20:49.017 に答える
1

個人的には、削除にネストされたルートを使用しているだけです。つまり、使用したことを意味します。

DELETE /photos/{photo_id}/comments/{comment_id}

写真のコメントを削除します。私が使用する場合:

DELETE /comments/{comment_id}

だから私はこれのためにもう1つのルートを作成する必要がありますか? 削除のために別のルートを作成する理由は見つかりません。必要ではないと思います。ネストされたリソースには URL とパスが作成されており、規則に従っています。なぜそれらを使用しないのでしょうか? シンプルに保ちたいだけで、すでにあるものに対して余分な作業はしません。

于 2012-11-10T17:48:54.107 に答える