我正在尝试发送一个我将基于某些动态值生成的URL。但我不想对其进行硬编码,也不想使用响应或请求对象。
实施例: - http://localhost:8585/app/image/ {ID} / {publicUrl} / {文件名}
所以我想得到第一部分,即http://localhost:8585/app/image/ 仅来自Spring框架。我将提供其余的东西,如id,publicUrl,filename,以便它可以生成一个完整的绝对URL。
如何在Spring MVC中完成。
我正在使用spring MVC,spring Data,Spring Rest,Hibernate。
答案 0 :(得分:10)
您是在尝试收听网址还是尝试构建外部使用的网址?
如果是后者,您可以使用URIComponentsBuilder在Spring中构建动态URL。例如:
UriComponents uri = UriComponentsBuilder
.fromHttpUrl("http://localhost:8585/app/image/{id}/{publicUrl}/{filename}")
.buildAndExpand("someId", "somePublicUrl", "someFilename");
String urlString = uri.toUriString();
答案 1 :(得分:3)
只是Neil McGuigan的answer的补充,但没有硬编码架构,域名,端口&等...
可以这样做:
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
...
ServletUriComponentsBuilder.fromCurrentRequest.queryParam("page", 1).toUriString();
想象原始请求是
https://myapp.mydomain.com/api/resources
此代码将生成以下网址
https://myapp.mydomain.com/api/resources?page=1
希望这有帮助。
答案 2 :(得分:0)