我希望使用单个ExceptionHandler来处理每个异常,同时使用ratpack实现REST API。此ExceptionHandler将处理每个运行时异常并相应地发送json响应。
在ratpack中可以吗?在Spring中,我们使用@ControllerAdvice注释来做到这一点。我想用ratpack实现类似的行为。
感谢您的帮助。
答案 0 :(得分:2)
嗯,最简单的方法是定义实现 ratpack.error.ServerErrorHandler 的类,并将其绑定到注册表中的 ServerErrorHandler.class 。
以下是使用Guice注册表的ratpack应用程序示例:
function ForumNameByForumID(ID) {
var forum_name_topic_id = "";
var params = JSON.stringify({ forumid: ID });
$.ajax(
{
type: "POST",
dataType: "json",
data: params,
contentType: "application/json; charset=utf-8",
url: "WebService1.asmx/ForumNameByForumID",
success: function Process_Result(data) {
forum_name_topic_id = data.d.toString();
},
error: function Process_Error() { }
});
return forum_name_topic_id;
}
和Errorhandler一样:
public class Api {
public static void main(String... args) throws Exception {
RatpackServer.start(serverSpec -> serverSpec
.serverConfig(serverConfigBuilder -> serverConfigBuilder
.env()
.build()
)
.registry(
Guice.registry(bindingsSpec -> bindingsSpec
.bind(ServerErrorHandler.class, ErrorHandler.class)
)
)
.handlers(chain -> chain
.all(ratpack.handling.RequestLogger.ncsa())
.all(Context::notFound)
)
);
}
}
答案 1 :(得分:0)
你可以绑定你自己的错误处理程序,如果你使用spring你可以定义一个类型为 Action<BindingsSpec>
的Bean,绑定你的spring应用程序main并且只需要声明您的错误处理程序作为ratpack将要访问的bean