Swashbuckle 不会为 Enum 生成架构

问题描述 投票:0回答:1

我有以下结构 //控制器

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"
     }
    ]}
}`

我尝试了一些东西,

  1. 删除
    c.UseAllOfToExtendReferenceSchemas();
    实际上会修复 这种行为但是,删除这个选项并不是 适合我的需要
  2. 将参数的注释从 [FromQuery] 更改为 -> [FromBody] 也将修复此行为并具有 生成此枚举的组件/模式,还有此选项 是不适合我需要的东西
  3. 创建一个 DocumentFilter 并尝试手动添加此枚举 使用类似的模式定义
    swaggerDoc.Components.Schemas.Add("EnumA")
    ....会扔 错误,因为 swashbuckle 在运行时引用了这个枚举但是 不知何故,它没有输出到最终的 json 文件中

提示? (虚张声势 5.6.3)

c# swagger openapi swashbuckle
1个回答
0
投票

如果你使用的是 Newtonsoft,你还需要这个包:

Swashbuckle.AspNetCore.Newtonsoft

启动时:

services.AddSwaggerGenNewtonsoftSupport(); // needs to be placed after AddSwaggerGen()

您可以按照以下说明进行操作:https://github.com/domaindrivendev/Swashbuckle.AspNetCore#systemtextjson-stj-vs-newtonsoft

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.