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.

Cómo obtener la URL de un RequestEntity obtenido de RequestEntity.post(String, Object…)

Estoy utilizando Spring Boot 2.6.1 con Spring Web MVC y en mi controlador, quiero obtener la RequestEntity recibida en lugar de solo el cuerpo de la solicitud, porque necesito utilizar información como la URL.

Cuando quiero probar mi controlador, construyo una RequestEntity con el siguiente código:

RequestEntity<string> r = RequestEntity.post("http://www.example.com/{path}", "myPath").body("");

Ahora, no sé cómo obtener la información de la URL de esa RequestEntity:

r.getUrl() arroja una UnsupportedOperationException porque no hay URL en la RequestEntity.

Cuando observo el código en RequestEntity.body(String), veo que el objeto devuelto es un UriTemplateRequestEntity que extiende RequestEntity, pero este objeto siempre parece tener una URL nula según su constructor. Solo se establecen los atributos uriTemplate, uriVarsArray y uriVarsMap. Pero estos atributos no forman parte de RequestEntity.

¿Cómo puedo obtener la información de la URL de r sin tener que convertirlo en un UriTemplateRequestEntity? ¿Es un error en RequestEntity.getUrl() que debería reportar?

PD: Mi solución alternativa es la siguiente:

RequestEntity<string> r = RequestEntity.post(URI.create(format("http://www.example.com/%s", "myPath"))).body("");

o

java
RequestEntity<string> r = RequestEntity.post(URI.create("http://www.example.com/{path}".replaceAll("\\{path\\}", "myPath"))).body("");

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la información URL de un RequestEntity sin tener que convertirlo a UriTemplateRequestEntity, puedes utilizar el método getURI() en lugar de getUrl():

    r.getURI()
    

    Esto devolverá un objeto URI que representa la URL utilizada para crear el RequestEntity.

    En cuanto a si esto es un error en RequestEntity.getUrl(), es probable que el método no esté destinado a funcionar con UriTemplateRequestEntity, pero si crees que debería cambiarse, puedes reportarlo al equipo de Spring Boot.

Comments are closed.