Ruby 葡萄API修改参数存在错误
如您所知,您可以指定管线中需要一个参数,如下所示:Ruby 葡萄API修改参数存在错误,ruby,rack,grape,grape-api,Ruby,Rack,Grape,Grape Api,如您所知,您可以指定管线中需要一个参数,如下所示: requires:province,:type=>String 但是,我希望能够更改抛出的错误,并在没有给出参数时提供我自己的错误JSON 我怎样才能轻松做到这一点?我对猴子补法很满意 编辑:我看到第191行rescue\u from,这看起来可能有帮助,但我不确定如何使用它。 由于您基本上只是想重新构造错误,而不是完全更改文本,因此可以使用自定义错误格式化程序 例如: require "grape" require "json" modul
requires:province,:type=>String
但是,我希望能够更改抛出的错误,并在没有给出参数时提供我自己的错误JSON
我怎样才能轻松做到这一点?我对猴子补法很满意
编辑:我看到第191行rescue\u from
,这看起来可能有帮助,但我不确定如何使用它。
由于您基本上只是想重新构造错误,而不是完全更改文本,因此可以使用自定义错误格式化程序 例如:
require "grape"
require "json"
module MyErrorFormatter
def self.call message, backtrace, options, env
{ :response_type => 'error', :response => message }.to_json
end
end
class MyApp < Grape::API
prefix 'api'
version 'v1'
format :json
error_formatter :json, MyErrorFormatter
resource :thing do
params do
requires :province, :type => String
end
get do
{ :your_province => params[:province] }
end
end
end
“自己的错误”是什么意思?您是想更改文本,还是以不同的结构显示错误?后者完全可以通过自定义格式化程序实现。您能否提供一个示例,说明您当前收到的缺少参数的信息以及您希望看到的信息?@NeilSlater现在的信息类似于
{“error”:“missing parameter name”}
,但我想将其重新构造为{“response\u type”:“error”,“response”:“missing parameter name”}
curl http://127.0.0.1:8090/api/v1/thing?province=Cornwall
{"your_province":"Cornwall"}
curl http://127.0.0.1:8090/api/v1/thing
{"response_type":"error","response":"missing parameter: province"}