Swagger 虚张声势复杂对象成员装饰

Swagger 虚张声势复杂对象成员装饰,swagger,swashbuckle,Swagger,Swashbuckle,我很难找到如何在.NET Core WebAPI项目中使用swashback.AspNetCore(可通过nuGet package manager获得的最新版本)标记复杂对象的必需成员,我将这些成员用作操作的参数 我已经实现了一个定制的IOperationFilter,它为动作参数添加了一个required=true标志,但显然它没有经过复杂对象定义,因此它们的所有成员仍然标记为可选 我想得到的是: definitions: ComplexObjectParameters:

我很难找到如何在.NET Core WebAPI项目中使用swashback.AspNetCore(可通过nuGet package manager获得的最新版本)标记复杂对象的必需成员,我将这些成员用作操作的参数

我已经实现了一个定制的
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
你知道我该怎么做吗


编辑:此处提供演示我的问题的演示项目:

使用IDocumentFilter并将[必需]添加到必需的字段:

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);
            }
        }
    }
}
内部类AddComplexObjectRequiredParameter:IDocumentFilter
{
公共无效应用(SwaggerDocument swaggerDoc、DocumentFilterContext上下文)
{
if(swaggerDoc.Definitions!=null)
{
if(swaggerDoc.Definitions[“ComplexObjectParameters”].Required==null)
swaggerDoc.Definitions[“ComplexObjectParameters”]。必需=新列表();
foreach(typeof(ComplexObjectParameters).GetFields()中的变量字段)
{
if(Attribute.IsDefined(字段,typeof(RequiredAttribute)))
swaggerDoc.Definitions[“ComplexObjectParameters”]。必需。添加(field.Name);
}
}
}
}

如果没有完整的图片,排除此类故障非常困难。。。你能在GitHub上创建一个简单的项目来重现你的问题吗?是的,当然,这里是:运行项目并转到/swagger/URL将显示标记为必需的输入参数(这很好),但所有成员都标记为可选的(还有一些成员用于响应)。我向你发送了一个请求…谢谢,它可以工作!然而,这并不是我想要达到的目的:我有很多对象,有些对象有很多属性,所以像这样列出它们至少可以说是乏味的。有什么方法可以创建某种装饰,我可以将其添加到对象属性中吗?装饰器[必需]是一种方法,应该可以工作!但是Swashback中有一个bug破坏了它。我只是对我的建议做了一个编辑,不要硬编码成员,这应该不再是一个乏味的任务。。。