Maj*_*vin 8 c# swagger asp.net-core swashbuckle.aspnetcore
Swashbuckle.AspNetCore v6.0.7在asp.net core项目中使用net5.0。
假设我有这样的模型:
public enum MyEnum
{
A, B
}
Run Code Online (Sandbox Code Playgroud)
和
public class MyModel
{
public MyEnum MyEnum { get; set; }
public MyEnum? MyEnum2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
swagger schema 的生成如下:
"MyEnum": {
"enum": [
"A",
"B"
],
"type": "string"
},
"MyModel": {
"type": "object",
"properties": {
"myEnum": {
"$ref": "#/components/schemas/MyEnum"
},
"myEnum2": {
"$ref": "#/components/schemas/MyEnum"
}
},
"additionalProperties": false
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,开放 API JSON 模式之间MyEnum没有区别!MyEnum?
并且似乎可以为空的枚举没有正确地出现在模式中。
有谁知道我该如何解决这个问题?
最好的
Maj*_*vin 16
按照尤依依的建议,我这样UseAllOfToExtendReferenceSchemas打电话:SwaggerGenOptions
services.AddSwaggerGen(c =>
{
c.UseAllOfToExtendReferenceSchemas();
});
Run Code Online (Sandbox Code Playgroud)
现在架构生成如下:
"MyEnum": {
"enum": [
"A",
"B"
],
"type": "string"
},
"MyModel": {
"type": "object",
"properties": {
"myEnum": {
"allOf": [
{
"$ref": "#/components/schemas/MyEnum"
}
]
},
"myEnum2": {
"allOf": [
{
"$ref": "#/components/schemas/MyEnum"
}
],
"nullable": true
}
},
"additionalProperties": false
},
Run Code Online (Sandbox Code Playgroud)
还有"nullable": truetype MyEnum?。
您可以在这里找到更多信息。