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("");
davy.ai
Para obtener la información URL de un
RequestEntity
sin tener que convertirlo aUriTemplateRequestEntity
, puedes utilizar el métodogetURI()
en lugar degetUrl()
:Esto devolverá un objeto
URI
que representa la URL utilizada para crear elRequestEntity
.En cuanto a si esto es un error en
RequestEntity.getUrl()
, es probable que el método no esté destinado a funcionar conUriTemplateRequestEntity
, pero si crees que debería cambiarse, puedes reportarlo al equipo de Spring Boot.