【发布时间】:2015-12-28 17:04:38
【问题描述】:
我有一个受 Doorkeeper 保护的 Grape API,并且我有很多可以完美运行的方法。但是,有一种方法表现得很奇怪。 这是一个不需要参数的 GET 请求,运行它会引发以下错误:
Grape::Exceptions::ValidationErrors at /v1/discount_cards/all.json
id 无效
我的方法是这样的:
desc 'Get all the cards of current customer'
params {}
get 'all' do
current_customer.discount_cards.to_json(include:
{
barcode: {
include: :barcode_type
}
})
end
日志显示错误发生在logger.rb 文件的第 17 行,如下所示:
module API
class Logger
def initialize(app)
@app = app
end
def call(env)
payload = {
remote_addr: env['REMOTE_ADDR'],
request_method: env['REQUEST_METHOD'],
request_path: env['PATH_INFO'],
request_query: env['QUERY_STRING'],
x_organization: env['HTTP_X_ORGANIZATION']
}
ActiveSupport::Notifications.instrument 'grape.request', payload do
@app.call(env).tap do |response| # <-- logs say the error is here
payload[:params] = env['api.endpoint'].params.to_hash
payload[:params].delete('route_info')
payload[:params].delete('format')
payload[:response_status] = response[0]
end
end
end
end
end
我的主要base.rb 类如下所示:
module API
class Dispatch < Grape::API
mount API::V1::Base
end
Base = Rack::Builder.new do
use API::Logger
run API::Dispatch
end
end
我真的不明白id 在说什么,而且,所有其他 api 方法都可以正常工作(post、get、put、delete)。
您能帮我解决这个问题吗?
【问题讨论】:
-
您找到解决方案了吗?即使我面临同样的问题,我也无法理解它试图从错误消息中传达什么。
标签: ruby-on-rails api grape-api doorkeeper