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
2
3
4
# config/routes.rb
Rails.application.routes.draw do
resources :articles
end

通过调用 resources :articles,Rails 自动为我们的 Article 资源生成了一组标准的 RESTful 路由。在这个设置下,Rails 将为我们定义的 Article 资源生成一系列重要的路由。

我们可以使用 Rails 提供的命令来查看生成的路由:

1
rails routes

这将输出类似于以下的结果:

1
2
3
4
5
6
7
8
    articles GET    /articles(.:format)          articles#index
POST /articles(.:format) articles#create
new_article GET /articles/new(.:format) articles#new
edit_article GET /articles/:id/edit(.:format) articles#edit
article GET /articles/:id(.:format) articles#show
PATCH /articles/:id(.:format) articles#update
PUT /articles/:id(.:format) articles#update
DELETE /articles/:id(.:format) articles#destroy

上述输出展示了为 articles 资源生成的所有路由。每一行都对应于特定的 HTTP 请求,适用于我们正在构建的 Article 资源。

自定义路由

虽然使用 resources 方法生成标准的 RESTful 路由非常方便,但有时我们可能需要自定义某些路由。比如,我们可能想为 articles 资源添加一个名为 archive 的自定义操作。代码示例如下:

1
2
3
4
5
6
7
8
# config/routes.rb
Rails.application.routes.draw do
resources :articles do
member do
get 'archive'
end
end
end

在这个例子中,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 路由之定义资源和路由

https://zglg.work/rails-zero/18/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论