Quarkus: начало работы (с Reactive): приложение PostGres / Docker CRUD - отсутствуют URL-адреса POST, PUT и DELETE REST - PullRequest
0 голосов
/ 10 апреля 2020

Я изучаю Quarkus - Getting Started и Reactive учебник, в котором есть так называемое приложение «CRUD». В этом руководстве рассказывается, как перевести приведенный ниже код в URL-адреса RESTful. Любые намеки о том, где go для руководства и c. будет принята с благодарностью. К вашему сведению, мои попытки до сих пор возвращали ошибку 404 со следующим списком «ресурсов REST»:

  • PUT fruits {id} Расходует: application / json Производит: application / json
  • УДАЛИТЬ фрукты {id} Потребляется: приложение / json Производит: приложение / json
  • GET fruits {id} Потребляет: приложение / json Производит: приложение / json
  • GET фрукты Потребление: применение / json Производит: применение / json
  • POST фрукты Потребление: применение / json Производит: применение / json

Код из учебника: Quarkus - Начало работы с Reactive

 @GET
public Multi<Fruit> get() {
    return Fruit.findAll(client);
}

@GET
@Path("{id}")
public Uni<Response> getSingle(@PathParam Long id) {
    return Fruit.findById(client, id)
            .onItem().apply(fruit -> fruit != null ? Response.ok(fruit) : Response.status(Status.NOT_FOUND))
            .onItem().apply(ResponseBuilder::build);
}

@POST
public Uni<Response> create(Fruit fruit) {
    return fruit.save(client)
            .onItem().apply(id -> URI.create("/fruits/" + id))
            .onItem().apply(uri -> Response.created(uri).build());
}

@PUT
@Path("{id}")
public Uni<Response> update(@PathParam Long id, Fruit fruit) {
    return fruit.update(client)
            .onItem().apply(updated -> updated ? Status.OK : Status.NOT_FOUND)
            .onItem().apply(status -> Response.status(status).build());
}

@DELETE
@Path("{id}")
public Uni<Response> delete(@PathParam Long id) {
    return Fruit.delete(client, id)
            .onItem().apply(deleted -> deleted ? Status.NO_CONTENT : Status.NOT_FOUND)
            .onItem().apply(status -> Response.status(status).build());
}

1 Ответ

0 голосов
/ 10 апреля 2020

Во-первых, у вас есть quarkus-resteasy-mutiny как зависимость? Если нет, то вам это понадобится. Далее Multi обычно используется для возврата SSE. Если вы хотите вернуть список, верните Uni<List<T>>. Несколько onItem, вероятно, будет работать, но выглядит странно. Я бы предложил вместо этого использовать map. Попробуйте эти несколько вещей и посмотрите, что вы получите.

...