我很难找到如何在.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
答案 0 :(得分:0)
使用 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);
}
}
}
}