是否有建议的方法来验证rails 4 API的控制器操作中的任何输入参数?
我知道我可以将参数列入白名单,但如果我想检查他们是否提供了所需的值呢?
请假设没有模型验证,我必须在控制器中验证POST JSON。
作为示例,我们使用create Person示例JSON。
{
"person": {
"firstname": "Joe",
"lastname": "Bloggs",
"age": "99",
"starsign": "virgo",
"address": {
"line1": "123 street",
"city": "NYC",
"zip": "90210"
}
}
}
让我们说所有这些字段都是必需的,检查它们有价值的最佳方法是什么(忘记检查数字等,只是存在)。如果缺少一个或多个,也会返回错误消息。
我知道如果我创建一个像这样的人,模型验证将是最好的方法:
Person.new(params)
但我实际上并没有这样做,所以我需要另一种方法来检查值!
答案 0 :(得分:0)
你在控制器动作中要做的是写
之类的东西 params.require(:person).require(:firstname, :lastname)
如果未提供person param,则会抛出错误,然后您可能会捕获该错误并执行所需的行为,其中应包括通知用户未提供person param。
答案 1 :(得分:0)
https://github.com/ruby-json-schema/json-schema将满足您的需求。它可以根据提供的模式验证json数据。