intro_rails

理解 REST 架构

RESTful 是一种 HTTP 架构风格。Rails 默认就是使用 REST 风格的。使用 REST 后,开发者可以很好如何命名和管理资源。

什么是 REST

REST 风格的体系结构的核心概念是由统一资源标识符 (URI) 标识的资源。可以使用标准接口(如 HTTP)来处理这些资源以及使用这些资源的表示形式来交换信息。

  • 资源由 URI 来指定。
  • 使用 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法来实现对资源的增删查改 也就实现了“表现层状态转化”。
  • 通过操作资源的表现形式来操作资源。

REST 的作者同时还是 HTTP 协议的作者,所以 REST 和 HTTP 有很大的关联。

REST in Rails

Rails 默认的 route 就支持 REST,比如在routes.rb 添加以下一行:

resources :posts

就产生以下路由:

   Prefix Verb   URI Pattern               Controller#Action
    posts GET    /posts(.:format)          posts#index
          POST   /posts(.:format)          posts#create
 new_post GET    /posts/new(.:format)      posts#new
edit_post GET    /posts/:id/edit(.:format) posts#edit
     post GET    /posts/:id(.:format)      posts#show
          PATCH  /posts/:id(.:format)      posts#update
          PUT    /posts/:id(.:format)      posts#update
          DELETE /posts/:id(.:format)      posts#destroy

这里的资源就是 Post, 我们通过 HTTP Verb 实现了对资源的增删查改。

如果认真看第一个和第二个路由信息,可以发现 URI 都是 /posts,但是针对不同的 Action。

这里就是通过 HTTP Verb 来实现区别的,rails 路由接收到 /posts的请求,根据请求的 HTTP Verb 执行对应的 Action。

Rails 对 REST 的支持特别好。