报头不存在时有效负载中的返回错误消息

问题描述 投票:0回答:1

我有此操作方法:

[HttpGet]
public virtual async Task<IActionResult> GetModifiedSince([HeaderCompanyId] Guid? xCompanyId)
{
...
}

以上动作方法中的HeaderCompanyId类在这里定义:

public class HeaderCompanyIdAttribute : FromHeaderAttribute
{
    public HeaderCompanyIdAttribute()
    {
        Name = "x-company-id";
    }
}

我正在使用此IOperationFilter使xCompanyId必不可少:

public class AddSwaggerToStandardHeadersFilter : IOperationFilter
{
    public void Apply(Operation operation, OperationFilterContext context)
    {
        var companyIdHeader = operation.Parameters.FirstOrDefault(x => x.Name == "x-company-id");
        if (companyIdHeader != null)
        {
            companyIdHeader.Description = "Company id";
            companyIdHeader.Required = true;
        }
    }
}

这是我添加OperationFilter的位置:

public static IServiceCollection RegisterSwagger(this IServiceCollection services) =>
    services.AddSwaggerGen(setupAction =>
    {
        ...
        setupAction.OperationFilter<AddSwaggerToStandardHeadersFilter>();
    }
}

我可以在Swagger UI中看到标为必需的标题。但是,当我击中xCompanyId的端点而没有任何值时,ModelState.IsValid = true并没有得到关于所需标题的错误消息。

我如何返回4XX来指示需要xCompanyId标头?理想情况下,如果我在动作方法中设置一个断点,它甚至都不会受到打击。

c# http asp.net-core asp.net-core-2.1
1个回答
0
投票

如何在API方法中进行简单检查:

© www.soinside.com 2019 - 2024. All rights reserved.