bla*_*lah 3 json jsonschema json-schema-validator
如何自定义无效输入的错误消息?
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"username": {
"type": "string",
"pattern": "^[A-Za-z0-9-_.]+$",
"minLength": 3
},
"password": {
"type": "string",
"minLength": 8,
"pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d\\W]$"
}
},
"required": [
"username",
"password"
],
"errors": [
{
"property": "username",
"message": "min 3 characters, do not use spaces or special characters"
}
]
}
Run Code Online (Sandbox Code Playgroud)
例如,如果用户名输入不是必需的最小长度或不满足正则表达式模式,则显示一条自定义消息min 3 characters, do not use spaces or special characters
不支持自定义错误消息。但是,有一些讨论正在进行中,以在 JSON Schema 的下一版本中添加这样的功能。
更新 2021-01-26
JSON Schema 从未以这种方式支持自定义错误消息。这样做的主要问题是适当的错误消息取决于受众和上下文,因此以这种方式定义一条消息是有限制的。例如,开发人员需要与最终用户不同的反馈。
相反,JSON Schema 标准化了验证返回的结果。这允许您处理结果以生成适合您的受众的输出。理论上,可以开发库来为某些受众生成错误消息。这些将与您的验证器库分离,使您将来可以更轻松地切换到另一个实现。
但是,即使是最好的错误消息生成库也无法解决原始问题中提出的特定情况。库不能采用正则表达式并产生有意义的消息。好消息是,JSON Schema 提供了一种称为词汇表的扩展机制,您可以使用它来创建自定义关键字,以使用输出处理器生成更好的错误消息所需的信息来注释模式。例如,errors原始问题中的关键字将出现在标准输出结果中,并且可以被输出处理器用作产生面向用户的错误消息的一种方式。
不幸的是,还没有人构建过这些标准输出处理器之一,因此您将无法从货架上挑选一款。做起来应该不会太难,但你必须自己写。https://github.com/atlassian/better-ajv-errors是这些输出处理器工具之一,但它使用 ajv 的专有输出格式而不是标准格式。
标准化输出格式和 JSON Schema Vocabularies 都是 2019-09 草案中的新内容,到目前为止还没有被广泛采用。随着时间的推移,我们希望看到更多的工具使这些类型的自定义变得容易。
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |