我对Ruby很陌生,我知道一点Sinatra但我真正需要的是我的应用程序是Grape for rest api。
使用带参数的方法就像魅力一样,但是当我尝试添加参数时,我得到404未找到异常。
我在哪里错了?感谢
resource :devs do
desc "Get all devs"
get do
authenticate!
Dev.all
end
desc "Get dev by email"
params do
requires :email, type: String, desc: "Dev's email"
end
route_param :email do
get do
authenticate!
@devs = Dev.all(:email == params[:email])
#!error('email not found', 204) unless @devs.length > 0
end
end
desc "Get dev by API key"
get :key do
authenticate!
@dev = Dev.first(:api_key == params[:key])
!error('email not found', 204) unless @devs.length > 0
end
end
这是我在PostMan中的调用(我还在那里添加了Apikey的标题)
localhost:9292/devs/email/orelzion@gmail.com
但它总是给我相同的结果404
答案 0 :(得分:1)
route_param
指令并不像您认为的那样工作。根据您发布的代码,您应该访问的链接是localhost:9292/devs/orelzion@gmail.com
。
如果您希望代码与您编写的URL匹配,请使用嵌套命名空间(或等效地,嵌套资源):
resource :devs do
...
namespace :email do
desc "Get dev by email"
params do
requires :email, type: String, desc: "Dev's email"
end
route_param :email do
get do
...
end
end
end
...