【问题标题】:Customizing input validation in swagger ui在 swagger ui 中自定义输入验证
【发布时间】:2018-05-30 20:00:27
【问题描述】:

我们使用在 Asp.Net Core 上运行的 Swashbuckle 包从我们的网络服务器公开 swagger-ui。我们遇到了 Guid 输入字段的输入验证问题。

我们粘贴的 GUID 是从系统的其他部分读取的,格式为 deb83f8a3edc4b78a2ece3321f81b58b,请注意缺少的破折号。输入验证拒绝这个,因为它期望格式中的破折号(因此它接受 deb83f8a-3edc-4b78-a2ec-e3321f81b58b)。

我们提供的swagger文档的参数为type:string和format:uuid。它调用一些内部 validationGuid 调用,这些调用具有强制破折号的正则表达式。从浏览器控制台看来,它正在寻找一个名为 JsonSchema_string_uuid 的组件,但没有找到它。

所以我的问题是如何扩展 swagger-ui 以覆盖特定参数类型/格式的验证?

更新: 我知道 RFC 将 UUID 指定为包含破折号和解决方法。但是,我仍然有兴趣了解如何自定义自定义格式,特别是 uuid 的验证?

【问题讨论】:

    标签: validation swagger swagger-ui swashbuckle


    【解决方案1】:

    虽然 OpenAPI 规范和 JSON Schema 当前未定义 format: uuid,但 RFC 4122 将 UUID 定义为包含破折号,并且 OpenAPI 存储库中的 some comments 建议 format: uuid 应该遵循 RFC 4122。这意味着您没有破折号的示例很可能不是format: uuid。

    考虑将format: uuid 替换为pattern: '^[A-Fa-f0-9]{32}$'。

    【讨论】:

    • 有趣,我不知道 RFC。我会注意到指定特定模式的能力,但如果您对此有任何信息,我仍然有兴趣提供自定义验证。
    • 我认为唯一的方法是创建自己的版本,因为validateGuid 是“核心”功能的一部分。也就是说,我建议您在Swagger UI repository 中提问,以便您可以直接从 Swagger UI 开发人员那里获得答案。
    • 谢谢@Helen,我已经接受了你的模式建议,并且可能会在 SwaggerUI 存储库上发布一个问题以征求他们的想法
    猜你喜欢
    • 2017-01-24
    • 2018-01-05
    • 2016-11-09
    • 2018-03-18
    • 1970-01-01
    • 2013-07-09
    • 2016-03-04
    • 2019-02-18
    • 1970-01-01
    相关资源
    最近更新 更多