验证 api 控制器中的 post 参数
validating post params in api controller
是否有推荐的方法来验证 rails 4 API 的控制器操作中的任何输入参数?
我知道我可以将参数列入白名单,但是如果我想检查它们是否提供了所需的值怎么办?
请假设没有模型验证,我必须在控制器中验证 POST JSON。
作为示例,让我们使用一个创建 Person 的示例 JSON。
{
"person": {
"firstname": "Joe",
"lastname": "Bloggs",
"age": "99",
"starsign": "virgo",
"address": {
"line1": "123 street",
"city": "NYC",
"zip": "90210"
}
}
}
假设所有这些字段都是必需的,检查它们是否具有值的最佳方法是什么(忘记检查数值等,只检查是否存在)。如果缺少一个或多个,还会 return 一条错误消息。
我知道如果我要创建一个这样的人,模型验证将是最好的方法:
Person.new(params)
但我实际上并没有这样做,所以我需要另一种方法来检查值!
你会在控制器动作中做的是写类似
params.require(:person).require(:firstname, :lastname)
如果未提供 person 参数,这将引发错误,然后您应该捕获该错误并执行所需的行为,其中应包括通知用户未提供 person 参数。
https://github.com/ruby-json-schema/json-schema 将满足您的需求。它可以根据提供的架构验证 json 数据。
是否有推荐的方法来验证 rails 4 API 的控制器操作中的任何输入参数?
我知道我可以将参数列入白名单,但是如果我想检查它们是否提供了所需的值怎么办?
请假设没有模型验证,我必须在控制器中验证 POST JSON。
作为示例,让我们使用一个创建 Person 的示例 JSON。
{
"person": {
"firstname": "Joe",
"lastname": "Bloggs",
"age": "99",
"starsign": "virgo",
"address": {
"line1": "123 street",
"city": "NYC",
"zip": "90210"
}
}
}
假设所有这些字段都是必需的,检查它们是否具有值的最佳方法是什么(忘记检查数值等,只检查是否存在)。如果缺少一个或多个,还会 return 一条错误消息。
我知道如果我要创建一个这样的人,模型验证将是最好的方法:
Person.new(params)
但我实际上并没有这样做,所以我需要另一种方法来检查值!
你会在控制器动作中做的是写类似
params.require(:person).require(:firstname, :lastname)
如果未提供 person 参数,这将引发错误,然后您应该捕获该错误并执行所需的行为,其中应包括通知用户未提供 person 参数。
https://github.com/ruby-json-schema/json-schema 将满足您的需求。它可以根据提供的架构验证 json 数据。