如何自定义处理 Quarkus 中未找到的资源/URL?

mba*_*het 3 quarkus

我对 Quarkus 很陌生,我想知道如何覆盖提供错误日志的默认 404 页面,或者如何巧妙地将所有无法识别的 URL 重定向到 META-INF/recourses 目录中的自定义 HTML。

小智 6

使用 quarkus 0.20+ 你可以创建一个 ExceptionMapper,如下所示:

import java.util.Scanner;

import javax.ws.rs.NotFoundException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

/**
 * NotFoundExepptionMapper
 */
@Provider
public class NotFoundExeptionMapper implements ExceptionMapper<NotFoundException> {
    @Override
    public Response toResponse(NotFoundException exception) {
        String text = new Scanner(this.getClass().getResourceAsStream("/META-INF/resources/notfound.html"), "UTF-8").useDelimiter("\\A").next();
        return Response.status(404).entity(text).build();
    }
}
Run Code Online (Sandbox Code Playgroud)

将页面保存在 /META-INF/resources/notfound.html 上,就完成了。