quarkus Multi<String> не заключает строки в кавычки

avatar
drobert
1 июля 2021 в 16:43
101
1
1

Предыстория: я только начинаю работать с Quarkus и прохожу https://quarkus.io/guides/resteasy-reactive

У меня определена следующая конечная точка:

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/greeting/{name}/{count}/{delayInSeconds}")
    public Multi<String> greetings(String name, long count, short delayInSeconds) {
        return service.greetings(name, delayInSeconds, count);
    }

Детали лежащего в основе service не особенно важны, я не думаю; он создает поток "hello {name} - {idx}".

То, что я вижу в возвращенном HTTP-ответе, — это строки без кавычек (недопустимый json):

curl http://localhost:8080/hello/greeting/neo/4/1

[hello neo - 0,hello neo - 1,hello neo - 2,hello neo - 3]

Я попытался заменить pom.xml зависимость quarkus-resteasy-reactive на quarkus-resteasy-reactive-jackson, но с тем же эффектом (я думаю, потому что String уже зарегистрирован здесь: https://quarkus.io/guides/resteasy -reactive#resource-types ).

Есть ли безопасный способ сделать это? Или идея просто преобразовать Multi в List, чтобы Джексон мог правильно сериализовать его?

Отмечу, что пример, приведенный на https://quarkus.io/guides/getting-started-reactive (официальные документы), показывает цитируемый ответ:

$ curl http://localhost:8080/hello/greeting/3/neo
["hello neo - 0", "hello neo - 1", "hello neo - 2"]

Обновление

Это эффективно выполняет то, что я хочу, хотя я хочу подтвердить, что это не блокирует поток ввода-вывода:

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/greeting/{name}/{count}/{delayInSeconds}")
    // NOTE: conversion to `Uni<List` from `Multi`
    public Uni<List<String>> greetings(String name, long count, short delayInSeconds) {
        return service.greetings(name, delayInSeconds, count).collect().asList();
    }

Обновление

Как отмечено в комментариях, это открытая ошибка: https://github.com/quarkusio/quarkus/issues/18043 Закрытие.

Источник
geoand
1 июля 2021 в 19:04
2

Для этого существует открытая проблема: github.com/quarkusio/quarkus/issues/18043, которая, вероятно, скоро будет исправлена.

drobert
1 июля 2021 в 19:05
0

Гах, должно быть пропустил это. Спасибо @geoand.

geoand
2 июля 2021 в 06:11
0

Нет проблем, мы надеемся скоро исправить это для выпуска 2.0.x.

Ответы (1)

avatar
drobert
2 июля 2021 в 14:52
0

Как отмечено в комментариях, это открытая ошибка: https://github.com/quarkusio/quarkus/issues/18043 Закрытие.