检查请求参数

时间:2019-05-15 06:20:46

标签: ruby-on-rails rest http http-headers

我要检查请求标头参数。如果缺少属性,则我不接受请求。

当前实现在这里:

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

如何美化此代码?

1 个答案:

答案 0 :(得分:0)

我可能会将方法重写为如下形式:

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

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

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

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