Я разрабатываю приложение Web API 2, и в настоящее время я пытаюсь форматировать ошибки resposnes единым способом (чтобы потребитель также знал, какой объект/структура данных они могут проверять, чтобы получить больше информации об ошибках), Это то, что у меня есть до сих пор:
{
"Errors":
[
{
"ErrorType":5003,
"Message":"Error summary here",
"DeveloperAction":"Some more detail for API consumers (in some cases)",
"HelpUrl":"link to the docs etc."
}
]
}
Это отлично подходит для исключений, создаваемых самим приложением (то есть внутри контроллеров). Однако, если пользователь запрашивает плохой URI (и получает 404) или использует неправильный глагол (и получает 405) и т.д., Web Api 2 выплескивает сообщение об ошибке по умолчанию, например.
{
Message: "No HTTP resource was found that matches the request URI 'http://localhost/abc'."
}
Есть ли способ улавливать эти ошибки (404, 405 и т.д.) и форматировать их в ответ на ошибку в первом примере выше?
До сих пор я пробовал:
- Настраивание пользовательских исключенийAttribute
ExceptionFilterAttribute
- Пользовательский ControllerActionInvoker inherting
ApiControllerActionInvoker
-
IExceptionHandler
(новая функция глобальной обработки ошибок из Web API 2.1)
Однако ни один из этих подходов не способен поймать такие ошибки (404, 405 и т.д.). Любые идеи о том, как/если это может быть достигнуто?
... или я об этом неправильно? Должен ли я форматировать ответы об ошибках в моем конкретном стиле для ошибок приложения/уровня пользователя и полагаться на ответы об ошибках по умолчанию для таких вещей, как 404?