我们正在使用SwashBuckle 5.0,并尝试生成swagger doc 2.0
。显然,它确实产生了swagger.json,但并不完全符合swagger 2.0规范。问题特别是围绕它如何枚举枚举的:
name: prop-name
description: something
type: array
items:
$ref: '#/definitions/mytype'
应该在的地方:
name: prop-name
description: something
type: array
items:
type: string
enum:
- Item1
因为它是100%宽幅2.0规范。所以,总而言之,SwashBuckle为我们生成了一个swagger.json,而不是100%宽幅2.0的抱怨。我们通过说SerializeAsV2 = true
我们还考虑了升级到OAS 3.0的决定,由于所有客户都必须进行更改,因此暂时不这样做,这是一项巨大的努力。因此,我们将重新尝试弄清楚SwashBuckle如何产生swagger.json(即100%swagger 2.0投诉)?我只想看看在我向SwashBuckle团队提交错误之前是否需要更改配置。
有什么建议吗?
我首先在http://editor.swagger.io上快速测试了您的模式,但没有收到任何错误...
以下是我尝试重现您的代码的尝试:https://github.com/heldersepu/csharp-proj/blob/master/WebApi_NetCore/WebApi_NetCore/Controllers/ErrorController.cs#L19-L42
[HttpPost]
public List<MonthEnum> Enum(string id)
{
var l = new List<MonthEnum>();
l.Add(MonthEnum.July);
l.Add(MonthEnum.August);
return l;
}
这给我们:https://raw.githubusercontent.com/heldersepu/hs-scripts/master/swagger/swagger_enum.json
"/api/Error": {
"post": {
"tags": [
"Error"
],
...
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/MonthEnum"
}
}
}
}
}
},
...
},
"definitions": {
...
"MonthEnum": {
"format": "int32",
"enum": [
0,
1,
...
],
"type": "integer"
}
}
Swagger用户界面说这是有效的:http://petstore.swagger.io/?url=https://raw.githubusercontent.com/heldersepu/hs-scripts/master/swagger/swagger_enum.json
也许您的摇摇欲坠的模式有其他问题