在api控制器中验证post params

时间:2016-10-13 17:40:23

标签: ruby-on-rails rails-api

是否有建议的方法来验证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)

但我实际上并没有这样做,所以我需要另一种方法来检查值!

2 个答案:

答案 0 :(得分:0)

你在控制器动作中要做的是写

之类的东西
 params.require(:person).require(:firstname, :lastname)

如果未提供person param,则会抛出错误,然后您可能会捕获该错误并执行所需的行为,其中应包括通知用户未提供person param。

答案 1 :(得分:0)

https://github.com/ruby-json-schema/json-schema将满足您的需求。它可以根据提供的模式验证json数据。