葡萄参数验证不适用于获取操作

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