web-dev-qa-db-ja.com

Spring MVCで動的URLを構築する方法は?

動的な値に基づいて生成する1つのURLを送信しようとしています。しかし、ハードコーディングしたり、応答オブジェクトや要求オブジェクトを使用したりしたくありません。

例:

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

したがって、Spring Frameworkからのみ最初の部分(つまり http:// localhost:8585/app/image )を取得したいと思います。 idpublicUrlfilenameなどの残りの部分を提供して、完全なabsoluteURL。

Spring MVCでそれを行う方法は?

9
John Maclein

URLをリッスンしようとしていますか、それとも外部で使用するURLを作成しようとしていますか?

後者の場合、 RIComponentsBuilder を使用してSpringで動的URLを作成できます。例:

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

String urlString = uri.toUriString();
12
Neil McGuigan

Neil McGuiganの answer に追加しただけですが、スキーマ、ドメイン、ポートなどをハードコーディングしていません...

これを行うことができます:

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

お役に立てれば。

3
Grigory
0
yas