gpt4 book ai didi

java - Ratpack Rest API 异常处理程序

转载 作者:行者123 更新时间:2023-12-04 02:07:15 26 4
gpt4 key购买 nike

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

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

感谢您的帮助。

最佳答案

嗯,最简单的方法是定义实现 ratpack.error.ServerErrorHandler 的类,并将其绑定(bind)到注册表中的 ServerErrorHandler.class

这是一个带有 Guice 注册表的 ratpack 应用程序示例:

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)
)
);
}
}

Errorhandler 就像:

class ErrorHandler implements ServerErrorHandler {

@Override public void error(Context context, Throwable throwable) throws Exception {
try {
Map<String, String> errors = new HashMap<>();

errors.put("error", throwable.getClass().getCanonicalName());
errors.put("message", throwable.getMessage());

Gson gson = new GsonBuilder().serializeNulls().create();

context.getResponse().status(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()).send(gson.toJson(errors));
throw throwable;
} catch (Throwable throwable1) {
throwable1.printStackTrace();
}
}

}

关于java - Ratpack Rest API 异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com