У меня есть 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 я мог бы добиться этого, используя ссылочный тип, допускающий значение NULL, но Visual Studio указывает, что 8.0 в настоящее время находится в предварительной версии и, следовательно, не является для меня вариантом. Тем не менее, я действительно не смог найти ничего другого, что указывало бы на возможность такого рода вещей или нет.
Мой вопрос: можно ли рассматривать этот параметр заголовка как необязательный или мне нужно сделать это по-другому?
public IHttpActionResult Register([FromBody] RegistrationRequest request) => Register(RegistrationRequest, null);
- person blenderfreaky   schedule 22.06.2019