我正在使用Fastify构建API,这是我第一次使用JSON模式验证。我们的想法是,它将使服务器代码更高效,并帮助我们的开发人员学习如何使用我的API。
我尝试验证允许客户端仅按名称查询小猫的路由。成功构建的查询将显示为/kittens?name=fluffykins
。
此路线的架构如下所示:
{
querystring: {
type: 'object',
name: { type: 'string' },
}
}
如何让我的架构验证器仅接受name
上的查询并拒绝其他查询,例如/kittens?age=1
?我的首选是模式验证器独立于我的控制器代码处理它,并且它还支持我们将来可能添加的查询。
谢谢!
答案 0 :(得分:3)
就像我向SO发帖时的典型情况一样,我很快就会找到答案。以下是对我有用的,但我仍然有兴趣听听是否还有其他更好的方法来做到这一点!
[\d+]
答案 1 :(得分:1)
我不太确定你要对{
"type": "object",
"required": ["name"],
"propertyNames": {"enum": ["name"]},
"properties": {
"name": {"type": "string"}
}
}
做什么,所以我可能会遗漏一些东西,但我相信这就是你想要的(如果你使用的是草案06或更高版本):
propertyNames
name
确保"additoinalProperties": false
是唯一可接受的属性。您也可以通过设置propertyNames
来实现此目的(如果您使用draft-04,则必须执行此操作,因为它不支持propertyNames
)。但是,当您尝试组合模式时,这样做会导致意外问题,因此如果您可以使用draft-06 {
"type": "object",
"required": ["name"],
"properties": {
"name": {"type": "string"}
},
"additionalProperties": false
}
更灵活。
这是draft-04版本:
<%= stylesheet_link_tag 'application', media: 'all' %>