首页 > 解决方案 > 检查请求参数

问题描述

我想检查请求标头参数。如果缺少某个属性,我不接受该请求。

当前的实现在这里:

class SampleController < ApplicationController
    before_action :render_message, unless: :check_header
    // GET method 
    def index
        ....
    end

    def check_header
        return request.headers["key1"] && request.headers["key2"] && request.headers["key3"]
    end

    def render_message
        render json: { message: "missing the custom attribute in the header" }, status:400
    end

我怎样才能美化这段代码?

标签: ruby-on-railsresthttphttp-headers

解决方案


我可能会将方法重写为这样的:

def check_header
  required_headers = %w[key2 key2 key3]
  required_headers.all? { |key| request.headers[key] }
end

请注意,上述版本的行为与您的示例相同。如果您确实需要检查值是否存在(空字符串仍然是真实的),那么您也需要检查present?

def check_header
  required_headers = %w[key2 key2 key3]
  required_headers.all? { |key| request.headers[key].present? }
end

我会考虑使用常量而不是局部变量required_headers


推荐阅读