ruby-on-rails - 检查请求参数
问题描述
我想检查请求标头参数。如果缺少某个属性,我不接受该请求。
当前的实现在这里:
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
我怎样才能美化这段代码?
解决方案
我可能会将方法重写为这样的:
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
。
推荐阅读
- debugging - Electron js错误-找不到文件
- android - 是否可以获取 Exoplayer、元数据等艺术家信息?
- arrays - 在表格行角度显示json数组列表
- angular - 角度:创建名为 Heros.ts 的模型
- python - python3 numpy:数组的索引太多
- java - Java FX ListView 单元格背景在滚动时影响未着色的单元格
- react-native - 如何在 Text 中围绕 Text 包裹 TouchableOpacity?
- c++ - 使用 body_limit 提升野兽消息
- reactjs - 如何使用现有选择在反应引导预输入菜单中显示所有选项
- xml - 将整个 xml 文件从 web 解析到 sqlite 数据库