Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 关于删除嵌套资源的RESTful路由的意见?_Ruby On Rails_Rest - Fatal编程技术网

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表示“不要让数据库模型泄漏到资源模型”您的问题得到了回答吗?您的问题得到了回答吗?