我们正在使用 Swashbuckle 来记录我们的 WebAPI 项目(使用 Owin),并尝试修改 Swashbuckle 生成的 Swagger 文件。
随着DescribeAllEnumsAsStrings()
和如下所示的枚举属性,我们得到预期的结果:
class MyResponseClass {
public Color color;
}
enum Color {
LightBlue,
LightRed,
DarkBlue,
DarkRed
}
Swagger 生成的结果:
"color": {
"enum": [
"LightBlue",
"LightRed",
"DarkBlue",
"DarkRed"
],
"type": "string"
},
我们面临的挑战是我们有一些类型的属性string
但我们实际上将它们视为enum
类型。例如:
class MyResponseClass {
public string color;
}
该属性唯一可能的值为dark-blue
, dark-red
, light-blue
, light-red
.
因此,我们想要如下所示的结果:
"color": {
"enum": [
"light-blue",
"light-red",
"dark-blue",
"dark-red"
],
"type": "string"
},
我们有很多这样的属性,在不同的类中具有不同的值。如果有一个如下所示的自定义属性以使其通用,那就太好了。我不知道如何创建这样的属性并在 Swashbuckle 中使用它DocumentFilters
or OperationFilters
:
public MyEndpointResponseClass {
[StringEnum("booked", "confirmed", "reserved")]
public string status;
// Other properties
}
public MyEndpointRequestClass {
[StringEnum("dark-blue", "dark-red", "light-blue", "light-red")]
public string color;
// Other properties
}