【问题标题】:How to handle bad requests / wrong parameters in a rails api?如何处理rails api中的错误请求/错误参数?
【发布时间】:2018-05-30 16:13:23
【问题描述】:

例如,一个 api 消费者发送:

"ticket": [{ "param": "value"}]

控制器会:

params.require(:ticket).permit(:name)

这将返回 500 错误:“未定义的方法允许数组”

是否有处理此问题的 DRY / 最佳实践方法?我认为应该返回状态400

【问题讨论】:

    标签: ruby-on-rails api rails-api


    【解决方案1】:

    我认为强参数 gem 应该在内部处理这个问题,但他们没有,所以这是我的解决方案

      rescue_from NoMethodError do |exception|
        if exception.message =~ /undefined method `permit' for/
          render_error(message: 'Invalid parameter format.', type: :invalid_parameters, status: :bad_request)
        else
          raise
        end
      end
    

    【讨论】:

      【解决方案2】:

      根据您的解决方案..您可能希望处理特定错误响应的所有可能性。您可以像这样在您的渲染方法中设置救援,并在出现方法错误或其他问题时设置未经授权:

      begin
        render json: json, status: 200 
      rescue_from NoMethodError do |exception|
        render :unauthorized
      end
      rescue => e
        render :unauthorized
      end
      

      【讨论】:

        猜你喜欢
        • 2021-12-29
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        • 2021-04-28
        • 2019-03-05
        • 1970-01-01
        相关资源
        最近更新 更多