我有以下结构 //控制器
GetProducts(string id, [FromQuery] Product)
//Product.cs 类包含一个枚举成员
Product
{
EnumA ExampleA
}
`//startup.cs
services.AddSwaggerGen(c =>
{
c.UseAllOfToExtendReferenceSchemas();
}`
当尝试检查 API 以使用 swagger ui 获取产品时,我遇到了 EnumA 的解析器问题,因为在生成的 json 文件中没有 EnumA 的组件/模式定义,即使它在json。像这样的
`//paths section of the json
{
"name": "ExampleA",
"in": "query",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/EnumA"
}
]}
}`
我尝试了一些东西,
c.UseAllOfToExtendReferenceSchemas();
实际上会修复
这种行为但是,删除这个选项并不是
适合我的需要swaggerDoc.Components.Schemas.Add("EnumA")
....会扔
错误,因为 swashbuckle 在运行时引用了这个枚举但是
不知何故,它没有输出到最终的 json 文件中提示? (虚张声势 5.6.3)
如果你使用的是 Newtonsoft,你还需要这个包:
Swashbuckle.AspNetCore.Newtonsoft
启动时:
services.AddSwaggerGenNewtonsoftSupport(); // needs to be placed after AddSwaggerGen()
您可以按照以下说明进行操作:https://github.com/domaindrivendev/Swashbuckle.AspNetCore#systemtextjson-stj-vs-newtonsoft