Ruby on rails 关于删除嵌套资源的RESTful路由的意见?
给定带有注释的照片的典型嵌套资源,创建注释的路径如下所示:Ruby on rails 关于删除嵌套资源的RESTful路由的意见?,ruby-on-rails,rest,Ruby On Rails,Rest,给定带有注释的照片的典型嵌套资源,创建注释的路径如下所示: POST /photos/{photo_id}/comments 现在,要删除注释,您是否仍然使用“嵌套”路由?例: DELETE /photos/{photo_id}/comments/{comment_id} 或 嵌套路由的优点是它镜像了创建URL,并且不需要routes.rb中的任何其他条目。使用顶级URL的好处是,从技术上讲,你不需要照片id来删除评论 想法?就个人而言,我只是使用嵌套路由进行删除,这意味着我使用了: DEL
POST /photos/{photo_id}/comments
现在,要删除注释,您是否仍然使用“嵌套”路由?例:
DELETE /photos/{photo_id}/comments/{comment_id}
或
嵌套路由的优点是它镜像了创建URL,并且不需要routes.rb中的任何其他条目。使用顶级URL的好处是,从技术上讲,你不需要照片id来删除评论
想法?就个人而言,我只是使用嵌套路由进行删除,这意味着我使用了:
DELETE /photos/{photo_id}/comments/{comment_id}
删除照片的评论。如果我使用:
DELETE /comments/{comment_id}
所以我必须为这个再创建一条路线?我没有找到任何理由为delete创建单独的路由,我认为没有必要。嵌套的资源为我们创建url和路径,它们遵循惯例,我们为什么不使用它们呢?我只想保持它的简单性,不会为已经拥有的东西做额外的工作。就我个人而言,我只是使用嵌套路由进行删除,这意味着我使用了:
DELETE /photos/{photo_id}/comments/{comment_id}
删除照片的评论。如果我使用:
DELETE /comments/{comment_id}
所以我必须为这个再创建一条路线?我没有找到任何理由为delete创建单独的路由,我认为没有必要。嵌套的资源为我们创建url和路径,它们遵循惯例,我们为什么不使用它们呢?我只想保持简单,不会为已经拥有的东西做额外的工作。你能
得到这个吗
GET /comments/{comment_id}
我想不是。但是如果你不能获取资源,你也不能删除它
因此,只有第二个选项是RESTful。你能得到这个吗
GET /comments/{comment_id}
我想不是。但是如果你不能获取资源,你也不能删除它
因此,只有第二个选项是RESTful。如何建模注释
资源很大程度上取决于您如何查看资源注释
如果一条评论可能没有照片,并且可能与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}
我猜,如何对注释建模的混乱是由数据库模型造成的,其中每个注释都会获得一个唯一的id,该id在所有注释中都是唯一的,而不仅仅是在photo\u id
和comment\u id
组合键中唯一。我建议不要让数据库模型泄漏到资源模型中,而应选择适合您对资源概念性理解的模型。如何对注释资源建模在很大程度上取决于您如何看待资源注释
如果一条评论可能没有照片,并且可能与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}
我猜,如何对注释建模的混乱是由数据库模型造成的,其中每个注释都会获得一个唯一的id,该id在所有注释中都是唯一的,而不仅仅是在photo\u id
和comment\u id
组合键中唯一。我建议不要让数据库模型泄漏到资源模型,而应该选择一个适合您对资源概念理解的模型。+1表示“不要让数据库模型泄漏到资源模型”+1表示“不要让数据库模型泄漏到资源模型”您的问题得到了回答吗?您的问题得到了回答吗?