主页

rails routes namespace

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

 

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论