处理REST和浏览器请求异常的最佳实践?

时间:2016-04-28 18:57:54

标签: rest grails exception-handling grails-2.0 grails-controller

在存在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}
        }

这似乎有效,但我不相信这是最好的解决方案。

1 个答案:

答案 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标头被忽略的用户代理列表,但这仅在您使用此标头进行内容协商时才有意义。