当前位置: 首页 > 知识库问答 >
问题:

SwashBuckle如何将OneOf声明添加到OpenAPI 3

金昌胤
2023-03-14

我有一个请求对象,可以是2种字符串类型“A”或“B”。

注意:这是我真正想要的一个更简单的例子。枚举在这里不适合我。

public class SampleRequest
    {
        //Can only be "A" or "B"
        public string Property1 { get; set; }
    }

我正在尝试创建一个可以输出为OpenAPI“OneOf”属性的模式过滤器。

https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00#section-5.5.5

https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/#oneof

https://github.com/domaindrivendev/Swashbuckle.AspNetCore#schema-过滤器

public class CustomSchemaFilter : ISchemaFilter
    {
        public void Apply(OpenApiSchema schema, SchemaFilterContext context)
        {

            schema.OneOf = new List<OpenApiSchema>
            {

                new OpenApiSchema {Type = "string", Description = "A"},
                new OpenApiSchema {Type = "string", Description = "B"}
            };
            
        }
    }

运行Swigger时,Swigger ui会正确呈现“One of”描述:

oneOf: List [ OrderedMap { "type": "string", "description": "A" }, OrderedMap { "type": "string", "description": "B" } ]

然而,我希望它的价值看起来更像

oneOf: [ "A", "B" ]

这可能吗?阅读我的招摇留档的人不会知道什么是List of OrderedMap。

共有1个答案

岑熙云
2023-03-14

在C#. NET Core 5中:为了在编译时为您的swagger.json自动解析oneOf(多态),请在您的S中添加以下行tartup.cs

public void ConfigureServices(IServiceCollection services){
     services.AddSwaggerGen(c => {c.UseOneOfForPolymorphism();})
}

对于其他一切,您可以遵循OpenAPI 3.0的留档。

 类似资料:
  • 我们正在按照“守护程序或服务器应用程序到Web API”模型对C#MVC Web API进行身份验证,我们希望向Azure Active Directory发布的令牌添加一些自定义声明,以便在Web API端进行验证。 我们最初的想法是通过编辑清单将这些可选声明添加到守护进程应用程序中,但是我们找不到一个好的示例,并且在保存它时会出错。 有没有人可以为我们提供一个如何添加此自定义声明的好例子? 或

  • 我试图添加项到Python数组。 我奔跑 然后,我尝试添加一些东西到这个数组通过做: 似乎没有方法。如何向数组中添加项?

  • 问题内容: 我试图将项目添加到python中的数组。 我跑 然后,我尝试通过以下操作向此数组添加一些内容: 似乎没有办法。如何将项目添加到数组? 问题答案: 表示一个空字典,而不是数组/列表。对于列表或数组,您需要。 要初始化一个空列表,请执行以下操作: 要么 要将元素添加到列表,请使用 要在列表中包含其他列表中的元素,请使用 要从列表中删除元素,请使用 字典表示键/值对的集合,也称为关联数组或映

  • 这是A.java 我想得到Newa. java 我想使用javaparser添加一个变量。

  • 问题内容: 我想使两个按钮看起来像按钮。只有当我使用actionlink的#ID来应用时,我才能实现此目的。我想为操作链接分配一个类,但是当我使用下面的代码时,出现一个错误,提示我缺少“}”。 这是我正在应用的样式: 这可行,我想我可以将另一个#ID添加到样式中,但想将样式应用于Class。 问题答案: 您必须使用字符,因为class是C#中的关键字。这是MSDN文档的链接

  • 请帮助我,我正在创建像sublime text editor这样的软件。我想显示可用的字符集列表,下面是主要问题的图片。在这张图片中,我看到的菜单弹出窗口至少有200多个字符集,但只有显示。。。某物但是要显示所有字符集。没有为该弹出菜单添加滚动条的选项 我的软件图片有问题,请看那个红色圆圈。 请任何人帮助我如何添加滚动条到那个