Swashbuckle 复杂对象成员装饰
Swashbuckle complex objects members decoration
我无法找到如何在 .NET Core WebAPI 项目中使用 Swashbuckle.AspNetCore(可通过 nuGet 包管理器获得最新版本)来标记我用作操作参数的复杂对象的必需成员。
我已经实现了一个自定义 IOperationFilter
,它为操作参数添加了一个 required = true
标志,但显然它没有通过复杂对象定义,所以它们的所有成员仍然被标记为可选。
我想得到的是:
definitions:
ComplexObjectParameters:
description: 'my complex object parameter'
type: object
required: ['parameter1', 'parameter2']
properties:
parameter1:
type: string
parameter2:
type: string
parameter3:
type: string
你知道我该如何实现吗?
编辑:此处提供演示我的问题的演示项目:https://github.com/albator1932/ComplexObjects
使用 IDocumentFilter 并将 [Required] 添加到必填字段:
internal class AddComplexObjectRequiredParameter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
if (swaggerDoc.Definitions != null)
{
if (swaggerDoc.Definitions["ComplexObjectParameters"].Required == null)
swaggerDoc.Definitions["ComplexObjectParameters"].Required = new List<string>();
foreach (var field in typeof(ComplexObjectParameters).GetFields())
{
if (Attribute.IsDefined(field, typeof(RequiredAttribute)))
swaggerDoc.Definitions["ComplexObjectParameters"].Required.Add(field.Name);
}
}
}
}
我无法找到如何在 .NET Core WebAPI 项目中使用 Swashbuckle.AspNetCore(可通过 nuGet 包管理器获得最新版本)来标记我用作操作参数的复杂对象的必需成员。
我已经实现了一个自定义 IOperationFilter
,它为操作参数添加了一个 required = true
标志,但显然它没有通过复杂对象定义,所以它们的所有成员仍然被标记为可选。
我想得到的是:
definitions:
ComplexObjectParameters:
description: 'my complex object parameter'
type: object
required: ['parameter1', 'parameter2']
properties:
parameter1:
type: string
parameter2:
type: string
parameter3:
type: string
你知道我该如何实现吗?
编辑:此处提供演示我的问题的演示项目:https://github.com/albator1932/ComplexObjects
使用 IDocumentFilter 并将 [Required] 添加到必填字段:
internal class AddComplexObjectRequiredParameter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
{
if (swaggerDoc.Definitions != null)
{
if (swaggerDoc.Definitions["ComplexObjectParameters"].Required == null)
swaggerDoc.Definitions["ComplexObjectParameters"].Required = new List<string>();
foreach (var field in typeof(ComplexObjectParameters).GetFields())
{
if (Attribute.IsDefined(field, typeof(RequiredAttribute)))
swaggerDoc.Definitions["ComplexObjectParameters"].Required.Add(field.Name);
}
}
}
}