为任何 api 方法中未使用的类型添加类型定义

Add type definition for type not used in any api method

我有一个采用自定义 header 的 api 端点。 这个 header 是一个 object,看起来像这样:

User: {"UserId":"someguid"}

如果我在 api 方法中将类型作为参数,我可以执行以下操作:

public class AddFileParamTypes : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        if (operation.operationId == "FileDelivery_Post")
        {

            operation.consumes.Add("multipart/form-data");
            operation.parameters.Add(new Parameter
            {
                name = "file",
                required = true,
                type = "file",
                @in = "formData"
            });
            operation.parameters.Add(new Parameter
            {
                name = "User",
                required = true,
                schema = new Schema() { @ref = "#/definitions/User" },
                @in = "header"
            });
        }
    }
}

但是 User 类型不会成为方法的参数,那么如何将定义添加到 swashbuckle?

发现,很简单,但缺少文档:

public class AddFileParamTypes : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        if (operation.operationId == "FileDelivery_Post")
        {

            operation.consumes.Add("multipart/form-data");
            operation.parameters.Add(new Parameter
            {
                name = "file",
                required = true,
                type = "file",
                @in = "formData"
            });
            operation.parameters.Add(new Parameter
            {
                name = "User",
                required = true,
                schema = schemaRegistry.GetOrRegister(typeof(User)),
                @in = "header"
            });
        }
    }
}