如何在Spring MVC中构建动态URL?

我正在尝试发送一个URL,我将根据一些动态值生成该URL。但我不想硬编码它,也不想使用响应或请求对象。

例:

http://localhost:8585/app/image/{id}/{publicUrl}/{filename}

因此,我想仅从Spring Framework中获取第一部分(即 http://localhost:8585/app/image)。我将提供其余的内容,如 , , ,以便它可以生成一个完整的绝对 URL。idpublicUrlfilename

如何在春季MVC中做到这一点?


答案 1

您是尝试侦听 URL 还是尝试构建要在外部使用的 URL?

如果是后者,您可以使用URIComponentsBuilder在Spring中构建动态URL。例:

UriComponents uri = UriComponentsBuilder
                    .fromHttpUrl("http://localhost:8585/app/image/{id}/{publicUrl}/{filename}")
                    .buildAndExpand("someId", "somePublicUrl", "someFilename");

String urlString = uri.toUriString();

答案 2

只是对Neil McGuigan的答案的补充,但没有硬编码模式,域,端口等...

可以这样做:

import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
...
ServletUriComponentsBuilder.fromCurrentRequest
        .queryParam("page", 1)
        .toUriString();

想象一下,最初的请求是

https://myapp.mydomain.com/api/resources

此代码将生成以下 URL

https://myapp.mydomain.com/api/resources?page=1

希望这有帮助。


推荐