Quarkus - 忽略 @Path("/") 的资源,而是从资源加载内容

alb*_*ert 6 quarkus

但是,尝试使用 @Path("/") 配置 JAX-RS 资源时,该资源将被忽​​略,并加载在资源中找到的第一个文件。

知道如何防止这种情况并使资源正常工作吗?清除 META-INF/resources 时,JAX-RS 资源会正确加载。

使用:Quarkus 1.4.2.Final

openjdk 版本“11.0.6”2020-01-14 LTS OpenJDK 运行时环境 Zulu11.37+52-SA(内部版本 11.0.6+10-LTS) OpenJDK 64 位服务器 VM Zulu11.37+52-SA(内部版本 11.0.6) 6+10-LTS,混合模式)

资源:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/")
public class LandingResource {

    @GET
    @Produces(MediaType.TEXT_HTML)
    public String getLandingPage() {
        return "<html><head><title>Hello World</title></head><body>Hello!</body></html>";
    }

}
Run Code Online (Sandbox Code Playgroud)

测试:

curl --location --request GET 'http://localhost:8080/'
Run Code Online (Sandbox Code Playgroud)

回复:

<!doctype html>
<html lang="en">
<head>
    <title>Internal Server Error - Error handling cee4cff3-551d-44e1-9102-5c9ada9d8fb2-7, java.nio.file.InvalidPathException: Illegal char &amp;lt;:&amp;gt; at index 97: <tempdir>\vertx-cache\file-cache-71fbfca9-5ba3-4a3e-8020-8501379cbf2b\<project dir>\src\main\resources\META-INF\resources\assets\icons\icon-128x128.png</title>
    <meta charset="utf-8">
    <style>
html, body {
    margin: 0;
    padding: 0;
    font-family: 'Open Sans', Helvetica, Arial, sans-serif;
    font-size: 100%;
    font-weight: 100;
    line-height: 1.4;
}
...
Run Code Online (Sandbox Code Playgroud)

小智 0

默认情况下,Quarkus 将从根上下文提供静态资源。这意味着里面的资源src/main/resources/META-INF/resources/已经映射到根目录(http://localhost:8080/)。这意味着您无法轻松地将标准 JAX-RS 映射到根上。

有关更多信息,请参阅文档:https ://quarkus.io/guides/http-reference

在您的情况下,您将返回一个固定的 HTML 登录页面。作为解决方案,您可以删除 LandingResource 类并从静态资源提供登录页面。

这可以通过将 HTML 片段放入 中来实现src/main/resources/META-INF/resources/index.html

这也是 Quarkus 默认登陆页面的服务方式。