我有一个内置于 .NET WebApi 的 REST API。我创建了一个自定义参数绑定属性,用于从 HTTP 标头中提取值。在某些情况下,请求中可能存在也可能不存在标头,因此我希望能够执行以下操作来将标头视为可选参数。
public IHttpActionResult Register([FromBody] RegistrationRequest request, [FromHeaderAuthorization] string authorization = null)
{
当我调用包含授权标头的端点时,这很好用。但是,在没有标头的情况下调用端点时,我收到以下错误消息:
The request is invalid.', MessageDetail='The parameters dictionary does not contain an entry for parameter 'authorization' of type 'System.String'
我一直在寻找尝试确定是否可以以这种方式将参数视为可选参数,并发现了一些混合结果。看来,在 C# 8.0 中,我可以使用可为空的引用类型来实现这一点,但 Visual Studio 表明 8.0 当前处于预览状态,因此对我来说并不是一个真正的选择。也就是说,我真的找不到任何其他东西来表明这种事情是否可能。
我的问题是,是否可以将此标头参数视为可选,还是我需要以不同的方式处理?