在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
相关产品推荐
相关产品推荐

