Ratpack Rest API ExceptionHandler

时间:2017-02-15 15:21:09

标签: java spring rest ratpack

我希望使用单个ExceptionHandler来处理每个异常,同时使用ratpack实现REST API。此ExceptionHandler将处理每个运行时异常并相应地发送json响应。

在ratpack中可以吗?在Spring中,我们使用@ControllerAdvice注释来做到这一点。我想用ratpack实现类似的行为。

感谢您的帮助。

2 个答案:

答案 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