es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando Quarkus para lanzar un código de estado con un mensaje.

Hola, estoy tratando de aprender Quarkus pero no puedo averiguar cómo devolver un mensaje de error al cliente.

    @POST
    public Uni<response> create(Fruit fruit) {
        if (Fruit.find(fruit.name) != null) {
            throw new WebApplicationException(fruit.name + " ya existe", 422);
        }
        return Panache.<fruit>withTransaction(fruit::persist)
            .onItem()
            .transform(inserted -> Response
                    .created(URI.create("/fruits" + inserted.id))
                    .build());
}

Tengo el siguiente bloque de código, lo que quiero es que el mensaje “fruit.name + ” ya existe” se imprima en el cliente cuando intenten hacer un POST. Pero solo obtengo el código de error 422. ¿Cómo puedo enviar también el mensaje de vuelta al cliente?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para devolver un mensaje de error al cliente junto con el código de estado HTTP, puedes modificar el código existente de la siguiente manera:

    @POST
    public Uni<response> create(Fruit fruit) {
        if (Fruit.find(fruit.name) != null) {
            return Uni.createFrom().failure(new WebApplicationException(fruit.name + " ya existe", Response.Status.UNPROCESSABLE_ENTITY));
        }
    
        return Panache.<fruit>withTransaction(fruit::persist)
                .onItem()
                .transform(inserted -> Response
                        .created(URI.create("/fruits" + inserted.id))
                        .build());
    }
    

    Como puedes ver, en lugar de lanzar la WebApplicationException, estamos creando un nuevo objeto Uni con un resultado de fallo y pasando el mensaje de error y el código de estado HTTP utilizando el constructor de WebApplicationException. Este objeto Uni se devolverá al cliente como respuesta, junto con el mensaje de error y el código de estado.

Comments are closed.