葡萄参数验证不适用于获取操作
Grape params vlidation not working for get action
我正在尝试对我的 get 操作进行参数验证检查。但不知何故它不起作用。有人可以建议我我们该怎么做。下面是我的代码。如果我发送不带任何参数的请求,则不会进行参数验证。我可以知道这是什么原因吗?请问我该如何解决。
module API
module V1
class Permissions < Grape::API
include Defaults
helpers do
def ensure_user_exists!
error!('Not authorized', 401) unless user_by_token.present?
end
def user_by_token
@user ||= User.find_by(token: params[:user_token])
end
end
resource :permissions do
params do
requires :user_token, type: String
end
before do
ensure_user_exists!
end
resource :documents do
get :document_details do
error!('Access Denied', 403) unless user_by_token.manager?
end
end
end
end
end
end
localhost:3000/api/permissions/documents/document_details.json returning error in user_by_token method.
您放错了 params 块。你应该把它放在 get 块之前,像这样:
module API
module V1
class Permissions < Grape::API
include Defaults
helpers do
def ensure_user_exists!
error!('Not authorized', 401) unless user_by_token.present?
end
def user_by_token
@user ||= User.find_by(token: params[:user_token])
end
end
resource :permissions do
before do
ensure_user_exists!
end
resource :documents do
params do
requires :user_token, type: String
end
get :document_details do
error!('Access Denied', 403) unless user_by_token.manager?
end
end
end
end
end
end
我正在尝试对我的 get 操作进行参数验证检查。但不知何故它不起作用。有人可以建议我我们该怎么做。下面是我的代码。如果我发送不带任何参数的请求,则不会进行参数验证。我可以知道这是什么原因吗?请问我该如何解决。
module API
module V1
class Permissions < Grape::API
include Defaults
helpers do
def ensure_user_exists!
error!('Not authorized', 401) unless user_by_token.present?
end
def user_by_token
@user ||= User.find_by(token: params[:user_token])
end
end
resource :permissions do
params do
requires :user_token, type: String
end
before do
ensure_user_exists!
end
resource :documents do
get :document_details do
error!('Access Denied', 403) unless user_by_token.manager?
end
end
end
end
end
end
localhost:3000/api/permissions/documents/document_details.json returning error in user_by_token method.
您放错了 params 块。你应该把它放在 get 块之前,像这样:
module API
module V1
class Permissions < Grape::API
include Defaults
helpers do
def ensure_user_exists!
error!('Not authorized', 401) unless user_by_token.present?
end
def user_by_token
@user ||= User.find_by(token: params[:user_token])
end
end
resource :permissions do
before do
ensure_user_exists!
end
resource :documents do
params do
requires :user_token, type: String
end
get :document_details do
error!('Access Denied', 403) unless user_by_token.manager?
end
end
end
end
end
end