在存在REST请求和常规浏览器请求的一个Grails应用程序(2.4.5)中处理异常的最佳实践是什么?
我在RESTful API调用和常规Web请求之间共享相同的ExceptionController。
UrlMapping.groovy
"500"(controller: "exception", action: "handle")
对于常规网络请求,这是在调用
render(view: 'show', model: model)
后来引入了RESTful API。由于异常仍将路由到ExceptionController,我改为
respond(view: 'show', model: model)
这似乎没有用,所以我更新到
withFormat{
html {render(view: 'show', model: model)}
json {render model as JSON}
}
这似乎有效,但我不相信这是最好的解决方案。
答案 0 :(得分:1)
这与我昨天实施的解决方案完全相同,唯一的细微变化是指定.run(($rootScope, $state, $cookies) => {
$rootScope.$on('$stateChangeStart', (evt, toState, toParams) => {
if(!$cookies.get('SessionID') && toState.authRequired)
{
evt.preventDefault();
$state.go('login');
}
})
})
而不是'*'
json
在我的情况下,我还在withFormat{
html {render(view: 'show', model: model)}
'*' {render model as JSON}
}
中删除了Config.groovy
标头被忽略的用户代理列表,但这仅在您使用此标头进行内容协商时才有意义。