Я использую OpenRasta 2.0 для создания REST API, и его расширяемость просто фантастическая - нам удалось, например, безболезненно подключить аутентификацию OAuth с использованием DotNetOpenAuth.
Однако я пришел кТеперь укажите, где мне нужно определить наши ответы на ошибки.Мы принимаем стандарты в отношении кодов ошибок HTTP, но я также намерен возвращать значимые ответы, во многом как в Twitter (постоянный пример REST):
{
"error":"This method requires authentication.",
"request":"\/1\/statuses\/followers.json"
}
Это лучший способвернуть OperationResult от всех наших обработчиков, вручную захватить исключения и отобразить в ResponseResource?Мне кажется, что это довольно много накладных расходов по сравнению с тем, как функционирует остальная часть OpenRasta.
Или мы должны написать какой-нибудь помощник для захвата исключений, создаваемых в конвейере, и глобального решения проблем?Возможно, перевод только исключений определенных типов (RestException?).
По сути, я чувствую, какой будет наилучшая практика для этого и как другие справятся с этим.
Спасибо.
РЕДАКТИРОВАНИЕ:
Посмотрев сегодня на это в течение некоторого времени, я не могу понять, как обернуть вызов обработчика - я объявил себя производным классом OperationInterceptorи подключил это к конвейеру с помощью ResourceSpace.Uses.PipelineContributor<OperationInterceptorContributor>()
и установил пользовательскую зависимость на ResourceSpace.Uses.CustomDependency<IOperationInterceptor, ExceptionHandlerInterceptor>(DependencyLifetime.PerRequest)
, но независимо от того, в каком из методов, которые я пробую и упаковываю в try-catch, исключение все еще пузырится.
Isэто RewriteOperation
, BeforeExecute
или AfterExecute
, которое является наиболее подходящим местом для ловушки - и если да, то можете ли вы дать мне подсказку, как начать?
Спасибо.