【发布时间】:2014-01-13 14:02:53
【问题描述】:
我已经阅读了很多关于 REST 以及如何以“正确方式”进行 REST 的文章。大多数资源使用 RESTful Web 服务或 RESTful API 等术语,但没有提及 RESTful 网站。我对此感到困惑,因为我认为网站和 API 是两个不同的东西。然而,例如,当使用 Rails 框架设计网站时,您会不断地被提醒一切都是 RESTful 的(或应该是)。
我知道 REST 为 API(例如 JSON API)提供了很多优势(其架构属性),但我只是不明白网站如何从 RESTful 中受益。作为一个简单的例子,考虑登录功能。在 REST 方式中,这可以通过创建一个会话模型来建模,其中登录对应于创建一个新会话,注销 销毁一个会话等等。 URL 看起来像这样:
Prefix Verb URI Pattern Controller#Action
new_user_session GET /users/login(.:format) sessions#new
user_session POST /users/login(.:format) sessions#create
destroy_user_session DELETE /users/sign_out(.:format) sessions#destroy
但是,这些 URL 对用户不是很友好。从用户的角度来看,只有一个显示登录表单的 /login 路径更有意义。它也更容易记住。但是,如果我们像这样制作 URL 映射,它们就不再是真正的 RESTful 了; /login 是否识别资源。如果有,是哪一个?
另一个例子是主页 /home 或只是 /。这如何适应 REST?在大多数网站上,主页是许多不同类型信息的混搭,并不能识别任何单一资源。例如,它可能是一个页面,其中列出了目录中的最新产品以及您上次登录的日期;完全不相关的两件事。 RESTful 怎么样?
我理解为什么将 RESTful API 与网站分开是有道理的,但我的困惑在于 REST 如何应用于网站 - 如果确实如此的话。
【问题讨论】:
-
我建议删除
ruby-on-rails标签。是的,这个问题使用 RoR 作为鼓励 RESTful Web 应用程序的 Web 框架的示例但是这个问题(及其答案)似乎根本与 RoR 无关。标签web-applications和web-api可能更合适。
标签: ruby-on-rails api rest web