Dav*_*ola 5 swagger swagger-ui .net-core swashbuckle openapi
我有一个请求对象,它可以是 2 个字符串类型“A”或“B”。
注意:这是我真正想要的一个更简单的例子。枚举在这里对我不起作用。
public class SampleRequest
{
//Can only be "A" or "B"
public string Property1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个可以作为 OpenAPI“OneOf”属性输出的模式过滤器。
https://tools.ietf.org/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-filters
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"}
};
}
}
Run Code Online (Sandbox Code Playgroud)
运行 swagger 时,swagger-ui 正确呈现“oneOf”描述:
oneOf: List [ OrderedMap { "type": "string", "description": "A" }, OrderedMap { "type": "string", "description": "B" } ]
Run Code Online (Sandbox Code Playgroud)
然而,我期待它的价值看起来更像
oneOf: [ "A", "B" ]
Run Code Online (Sandbox Code Playgroud)
这可能吗?阅读我的 swagger 文档的人不会知道 OrderedMap 列表是什么。
小智 11
在 C# .NET Core 5 中:为了oneOf在编译时自动解析(多态性)swagger.json,请在您的 中添加以下行Startup.cs:
public void ConfigureServices(IServiceCollection services){
services.AddSwaggerGen(c => {c.UseOneOfForPolymorphism();})
}
Run Code Online (Sandbox Code Playgroud)
对于其他一切,您可以遵循OpenAPI 3.0 的文档。
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |