You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Swagger文档上运行Dredd失败,报Schema匹配等解析错误

解决Dredd解析Swagger文档时的'anyOf'枚举/类型不匹配错误

你碰到的问题本质是Dredd对OpenAPI(Swagger)Schema的校验严格度远高于Swagger UI——Swagger UI会宽容处理一些不规范的定义,但Dredd作为API契约测试工具,会严格遵循OpenAPI规范来解析你的文档,所以会抛出这些看似奇怪的错误。

从你贴的错误信息和JSON片段来看,核心问题出在created_at字段的定义上:

  • type: "s"完全不是OpenAPI规范里合法的类型值,规范里支持的类型只有string、number、integer、boolean、array、object这几种,这里明显是手滑打错了,应该写成"type": "string"
  • format: "g"也不是标准的日期格式标识,OpenAPI里用于日期的标准格式是date(仅日期,格式YYYY-MM-DD)或date-time(带时间戳的完整格式,比如2023-10-05T14:48:00.000Z)

把这段定义修正成符合规范的写法:

"created_at": {
  "type": "string",
  "format": "date-time",
  "description": "创建日期"
}

修正后重新运行Dredd,这些解析错误应该就会消失了。另外建议你检查整个Swagger文档里的其他字段,看看有没有类似的笔误或不规范的类型/格式定义——毕竟Swagger UI的宽松可能让你忽略了这些细节,而Dredd会逐一揪出来。

内容的提问来源于stack exchange,提问作者slim1979

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:37:48