Grape 项目中,强制要求 token 参数,代码如下。
params {
requires :token
}
但如果 token 参数放在 header 中则无法通过验证,报错:Grape::Exceptions::ValidationErrors (token is missing)。
不知道该如何使 requires 能验证到 header 的参数?望各位不吝赐教:)
#1 楼 @geekontheway 但是如果去掉 params { requires :token } 在接口中可以 params[:token] 直接取到。不太明白为什么 params block 就不能验证到呢?
#3 楼 @geekontheway RestClient.get("http://127.0.0.1:9292/api/projects", {params: {page: 1}, token:'ffae4T9STVA5zsZT1tAdL'}) 只放 header 啊
可以在 before_validation
里判断 https://github.com/ruby-grape/grape#before-and-after
before_validation do
error! "Token not found in header", 400 if headers["token"].blank?
end
desc 'xxx' do
headers Token: {
description: 'user token',
required: true
}
end
https://github.com/ruby-grape/grape/blob/master/README.md#describing-methods