Quarkus - ресурс с @Path ("/") игнорируется, вместо этого загружает контент из ресурсов - PullRequest
1 голос
/ 08 мая 2020

Попытка настроить ресурс JAX-RS с помощью @Path ("/"), однако ресурс игнорируется и загружается первый файл, найденный в ресурсах.

Есть идеи, как предотвратить это и разрешить ресурс для работы? При очистке 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) 64-разрядная серверная виртуальная машина OpenJDK Zulu11.37 + 52-SA (сборка 11.0.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>";
    }

}

Тестирование:

curl --location --request GET 'http://localhost:8080/'

Ответ:

<!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;
}
...

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Добился желаемого результата, добавив веб-маршрут vertx:

import io.quarkus.vertx.web.Route;
import io.vertx.core.http.HttpMethod;
import io.vertx.ext.web.RoutingContext;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class LandingRoute {

    @Route(path = "/", methods = HttpMethod.GET)
    public void landing(RoutingContext rc) {
        rc.response().end("hello ");
    }
}

0 голосов
/ 08 мая 2020

По умолчанию Quarkus будет обслуживать c ресурсов из контекста root. Это означает, что ресурсы внутри src/main/resources/META-INF/resources/ уже сопоставлены с root (http://localhost: 8080 / ). Это означает, что вы не можете легко отобразить стандартный JAX-RS на root.

Дополнительную информацию см. В документации: https://quarkus.io/guides/http-reference

В вашем случае вы возвращаете фиксированную целевую страницу HTML. В качестве решения вы можете удалить класс LandingResource и обслуживать целевую страницу из ресурсов stati c.

Этого можно достичь, поместив фрагмент HTML в src/main/resources/META-INF/resources/index.html.

Таким же образом обслуживается целевая страница Quarkus по умолчанию.

...