18 RESTful 路由之定义资源和路由
在上一章中,我们深入探讨了 RESTful 架构的核心理念及其在 Rails 应用中的重要性。在本章中,我们将专注于如何在 Ruby on Rails 中定义资源和设置路由,以便使我们的控制器和视图能够处理 HTTP 请求。
资源的定义
在 Rails 中,资源
是指一组相关的对象,它们通常由一个模型类(Model)对应。我们常见的资源例子包括用户(Users)、文章(Articles)或评论(Comments)。每个资源都对应着一个尽量符合 RESTful 风格的 URL,这样可以方便地进行操作。
例如,如果我们有一个 Article
资源,它可能对应的 URL 结构如下:
GET /articles
- 显示所有文章GET /articles/new
- 显示创建新文章的表单POST /articles
- 创建新文章GET /articles/:id
- 显示特定文章GET /articles/:id/edit
- 显示编辑特定文章的表单PATCH/PUT /articles/:id
- 更新特定文章DELETE /articles/:id
- 删除特定文章
通过这些 URL,我们可以明确地看出哪些动作对应于 HTTP 方法,从而符合 REST 的约定。
定义资源的路由
在 Rails 中,我们通过在 config/routes.rb
文件中定义资源的路由来实现这一目标。Rails 提供了 resources
方法,使得配置路由变得非常简单。接下来,我们看一个实际的示例:
1 | # config/routes.rb |
通过调用 resources :articles
,Rails 自动为我们的 Article
资源生成了一组标准的 RESTful 路由。在这个设置下,Rails 将为我们定义的 Article
资源生成一系列重要的路由。
我们可以使用 Rails 提供的命令来查看生成的路由:
1 | rails routes |
这将输出类似于以下的结果:
1 | articles GET /articles(.:format) articles#index |
上述输出展示了为 articles
资源生成的所有路由。每一行都对应于特定的 HTTP 请求,适用于我们正在构建的 Article
资源。
自定义路由
虽然使用 resources
方法生成标准的 RESTful 路由非常方便,但有时我们可能需要自定义某些路由。比如,我们可能想为 articles
资源添加一个名为 archive
的自定义操作。代码示例如下:
1 | # config/routes.rb |
在这个例子中,member
块中的 get 'archive'
表示我们希望在特定的文章(即某个 ID 的文章)上调用 archive
操作。
执行 rails routes
将展示更新后的路由:
1 | archive_article GET /articles/:id/archive(.:format) articles#archive |
通过这种方式,我们可以灵活地为资源添加额外的路由,满足更复杂的业务需求。
小结
在本章中,我们学习了如何在 Ruby on Rails 中定义资源和相应的 RESTful 路由。我们通过具体的示例清晰地了解了如何使用 resources
方法来快速生成路由,以及如何进行自定义配置。掌握了这些知识后,我们可以有效地管理应用中的数据。接下来,我们将继续探讨使用 Rails 的路由助手,以更方便地生成和链接路由。
18 RESTful 路由之定义资源和路由