ruby-on-rails - RESTful 设计,如何命名 CRUD 之外的页面等?

标签 ruby-on-rails rest routes action crud

我在一个网站上工作,该网站有很多页面超出了我对 RESTful 设计的有限理解,本质上是:

Create, Read, Update, Delete, Show, List

这里的问题是:当页面没有整齐地落入 CRUD/show/list 时,什么是标记操作/路由的好系统?我的一些页面同时包含多个表的信息。我正在建立一个网站,在他们登录后为一些客户提供一个“大本营”。它不会给他们任何关于他们自己的信息,所以它不应该是,例如,/customers/show/1。它确实有关于公司的信息,但网站上还有其他页面以不同的方式这样做。当你遇到这些情况时,你会怎么做?这个“家庭基地”向客户展示,它主要有关于公司的信息(但不是唯一的)。

第二种情况:我在客户和公司之间有一个名为“匹配”的表。这些匹配在网站的不同部分以完全不同的方式访问(不同的布局、不同的 CSS 表、访问它们的不同类型的用户等。它们不能都是匹配/显示。标记其他的最好方法是什么?

非常感谢。 =)

最佳答案

我当然不是专家,但如果您重新考虑您的资源并将它们更严格地视为“名词”或至少是数据列表,那么将任何所需的操作放入 GET、POST、PUT 和 DELETE 中可能会更容易。例如,您有一个 /customers/资源可能有一个 /customers/{username}/每个客户的资源。也许这给了他们关于他们自己的信息。你可以有 /homebases/{username}//customers/{username}/homebase/作为您的基地资源。据推测,您将主要通过 GET 和 POST 访问该 homebase 资源,如果有任何需要更新的话(我不希望在 home-base 或仪表板上这样做,因为它是一个聚合资源)。

对于“匹配”,您可以使用类似 /matchings/{customer},{company}/ 的内容(是的,逗号和分号是允许的。逗号通常意味着这两个部分是顺序相关的,分号意味着顺序无关,尽管没有关于它的规则)。从该资源中,您可以使用 GET 来读取、显示和列出您需要的任何数据(包括作为 GET 请求正文传递的可选查询参数)、使用 POST 进行更新、使用 PUT 创建以及使用 DELETE 进行删除。使用 GET 中传递的参数,您还可以请求相同数据的不同 View 。当然,您可以拥有该匹配的子资源,例如 /matchings/{customer},{company}/invoices/{invoice#}/ .

顺便说一下,我喜欢“RESTful Web 服务”(2007 O'Reilly)这本书。

我希望这有一定道理并且有帮助。 =)

关于ruby-on-rails - RESTful 设计,如何命名 CRUD 之外的页面等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2863775/

相关文章:

ruby-on-rails - 使用 :before_save 检查 nil 值

java - 未能关闭 Spring Boot 安全配置

node.js - express 邮寄方法不适用于内容类型 :multipart/form-data

Angular 子路由不起作用并将我重定向到同一页面

java - jQuery/Ajax 显示“另存为”对话框,用于下载从 servlet 发送的文件

ruby-on-rails - Centos 5 上的 Postgresql 9.2、rails、bundle - PostgreSQL 太旧

ruby-on-rails - 如何将页码添加到 PDFKit 生成的 PDF?

java - Swagger - 呈现已声明异常的响应状态

django - 在 Django 中使用 Rest api 而不是 Views

node.js - JSON Web token 身份验证服务 - 检查单独服务器上的状态以保护路由。 NodeJS