我正在使用 Grails 2.3 创建一个 REST API,并且我想要一种更好的方法来处理将错误响应呈现为 JSON 响应。目前有一个异常包,它们都有一个 toJSON 方法。因此,我所有的控制器方法都将所有内容包装在相同的 try/catch 块中,并以相同的方式呈现任何错误响应。
我真正想要的是有一个未捕获的异常处理程序来完成所有这些,而不必将所有内容都包装在 try/catch 中。因此,如果有未捕获的异常,它会自动将异常转换为 JSON,设置适当的状态代码,并写入和刷新响应。
鉴于这一切,这是一个实际的问题:所以第一个问题是:这是一个愚蠢的想法吗?
由于 Grails 处理所有线程池,我想我需要在每次 api 调用开始时注册我的处理程序。我应该在每个控制器的 beforeInterceptor 闭包中执行此操作吗?
另外,我如何能够从我的处理程序访问响应对象以便能够编写正确的响应?
即使有人可以将我指向文档中的相关 grails 类,那也会有很大帮助。我搜索并找不到 grails 执行此操作的类,以查看我是否可以使用他们现有的类而不是编写自己的类。