2023-09-11 02:45PM
带有namespace的路由:
namesapce 是一个前缀,也是一个命名空间
有两种常见的用途:
1.允许不同的角色使用url
eg: /books 普通用户看到的 url
/admin/books 专门给管理员访问的url
2. 对与接口的url:
/interface/books
看到这个就知道它是一个接口
写接口的例子:
步骤1 - router 增加对应routes路由
在router.rb中
Rails.application.routes.draw do
……
end
增加下面的代码:
# 假设创建的路由是 /interface/books/all
namespace :interface do
resources :book do
collection do
get :all
end
end
end
步骤2 - 增加对应的controller
因为创建了一个interface,就是创建了一个namespace这个路由,所以要保证它的controller放在了对应的目录下面
先创建一个这样的文件夹:
:!mkdir app/controllers/interface
然后再创建这个文件:
:e app/controllers/interface/books_controller.rb
在文件里面增加下面的代码:
# 带有controller的命名空间是这样写的,继承了最原始的action
class Interface::BooksController < ActionController::Base
def all
end
end
然后可以在页面 localhost: 3000/interface/books/all 查看一下,因为没有做视图页面,所以一回车肯定会报错(但没关系),因为action也没有返回任何东西
def all
# 可以让action返回一个纯文本
render :text => 'hi'
end
也可以返回一个:json(json里面返回什么都可以)
def all
render :json => {
:name => '小王',
:sex => 'male',
:age => 18
}
end
再回到浏览器刷新就已经可以了
注意: ① app/controllers/interface/book_controller.rb文件
跟② app/controllers/books_controller.rb不是一个文件
1. 因为命名空间是不一样的:
① 是Interface::BooksController
② 是BooksController
2. 继承的东西也不同:
① 是ActionController::Base
② 是ApplicationController
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论