葡萄api终点"未找到"即使我试图定义它

时间:2013-11-28 14:21:22

标签: ruby rspec rack grape

当我测试/api/ping时,它按预期输出"PONG"。但是我期望/api/users/:user_id的JSON响应,但它找不到,并且没有调用命名空间中的before块。

class Users < Grape::API
  namespace ':user_id' do
    before do
      @user = User.find(params[:user_id])
    end

    get do
      @user
    end
  end
end

class API < Grape::API
  format :json
  default_format :json
  prefix 'api'

  get 'ping' do
    'PONG'
  end

  mount Users => 'users'
end

在rspec测试中:

let(:user) { create(:user) }
before { get "/api/users/#{user.id}" }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

虽然Grape文档表明它是有效的,但我根本无法使用mount GrapeSubClass => 'prefix'语法使您的示例工作,并放弃了。

但是,如果我对您的主API类进行以下简单更改,则所有内容似乎都有效:

class API < Grape::API
  format :json
  default_format :json
  prefix 'api'

  get 'ping' do
    'PONG'
  end

  # mount second API class in a namespace
  namespace 'users' do
    mount Users
  end
end