我正在使用Grails 2.3创建一个REST,我希望有一种更好的方法将呈现错误响应作为JSON响应来处理。目前拥有的是一个所有都有toJSON方法的异常包。因此,我的所有控制器方法都将所有内容封装在相同的try/catch块中,并以相同的方式呈现任何错误响应。
我真正想要的是拥有一个未被理解的异常处理程序,它可以完成所有这一切,而不必将所有内容都封装在try/catch中。因此,如果有一个不明确的异常,它将自动将异常转换为JSON,设置适当的状态代码,并编写和刷新响应。
考虑到这些,这里有一个实际的问题:第一个问题是:这是一个愚蠢的想法吗?
因为Grails处理所有线程池,所以我想我需要在每个api调用开始时注册我的处理程序。我应该在每个控制器的beforeInterceptor闭包中这样做吗?
此外,为了能够编写正确的响应,我如何能够从我的处理程序访问响应对象?
即使有人可以向我指出文档中的相关grails类,这也是一个很大的帮助。我搜索并没有找到grails这样做的类,以查看是否可以使用它们的现有类,而不是编写自己的类。
发布于 2013-11-19 02:06:53
http://grails.org/doc/latest/guide/theWebLayer.html#mappingToResponseCodes可能会有帮助。本质上,映射的自定义ErrorController可以为JSON呈现不明确的异常,
class MyJSONErrorController {
def handleError() {
def exception = request.exception
// perform desired processing to handle the exception
render exception as JSON
}
}在每个控制器中执行beforeInterceptor或尝试catch块似乎势不可挡。正如Spring框架所提倡的那样,只捕获需要专门处理的异常,而不是常见的错误。
https://stackoverflow.com/questions/20003206
复制相似问题