访问rescue_from中的参数

问题描述 投票:0回答:4

我正在使用葡萄,我想访问rescue_from中的请求参数:

class API < Grape::API

  rescue_from Grape::Exceptions::ValidationErrors do |e|
    rack_response({
  end
...

我怎样才能做到这一点?

ruby-on-rails rack ruby-grape
4个回答
5
投票

我成功做到了:

rescue_from :all do |e|
  req = Rack::Request.new(env)
  ApiCallAudits.create data: {input_params: req.params.as_json}, backtrace: $!.to_s, status: :error
end

3
投票

你可以尝试这样的事情:

rescue_from  Grape::Exceptions::ValidationErrors do |e|
  env['api.endpoint'].helper_method
end

婴儿车应该在助手中可用,但我不确定这个技巧https://github.com/intridea/grape/issues/438


0
投票

如果有人仍然想知道这一点,请提供最新的答案:

rescue_from Grape::Exceptions::ValidationErrors do |e|
  env['grape.request'].params
end

参见https://github.com/ruby-grape/grape/pull/894


0
投票

context.params
似乎是 2023 年实现这一目标的方法 - 来自 Grape Wiki on 异常处理:

在rescue_from块内,可以通过#context方法访问原始控制器方法(.self接收器)的环境。

例如

rescue_from :all do |e|
  user_id = context.params[:user_id]
  ...
end
© www.soinside.com 2019 - 2024. All rights reserved.