我在一个网站上工作,该网站有很多页面超出了我对 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/