当我测试/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}" }
我做错了什么?
答案 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