У меня есть REST API, встроенный в .NET WebApi. Я создал собственный атрибут привязки параметров для извлечения значения из заголовков 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 в настоящее время находится в режиме предварительного просмотра и, таким образом, на самом деле не вариант для меня.
Тем не менее, я не смог найти ничего другого, что указывало бы, возможен ли этот тип вещей или нет.
У меня вопрос: можно ли трактовать этот параметр заголовка как необязательный или мне нужно поступить иначе?