クラス UriComponentsBuilder
- 実装されたすべてのインターフェース:
CloneableSE
,UriBuilder
- 既知の直属サブクラス
ServletUriComponentsBuilder
UriComponents
用のビルダー。次のように使用します。- ファクトリメソッド(例:
fromUriString(String)
)を使用してビルダーを作成します。 - インスタンスメソッドを通じて URI コンポーネント (スキーム、ホスト、パスなど) を設定します。
UriComponents
をビルドします。- マップ、配列、変数値から URI 変数を展開します。
UriComponents.encode()
経由でエンコードします。UriComponents.toUri()
またはUriComponents.toUriString()
を使用します。
デフォルトでは、URI 解析は RFC parser type
に基づいており、入力文字列が RFC 3986 構文に準拠していることが想定されています。WhatWG URL 生活水準のアルゴリズムに基づく代替の WhatWG parser type
は、ユーザーが入力した URL で発生するさまざまなケースをより柔軟に処理します。
- 導入:
- 3.1
- 作成者:
- Arjen Poutsma, Rossen Stoyanchev, Phillip Webb, Oliver Gierke, Brian Clozel, Sebastien Deleuze, Sam Brannen
- 関連事項:
ネストされたクラスのサマリー
コンストラクターのサマリー
修飾子コンストラクター説明protected
デフォルトコンストラクター。protected
指定された UriComponentsBuilder のディープコピーを作成します。メソッドのサマリー
修飾子と型メソッド説明build()
このビルダーに含まれるさまざまなコンポーネントからUriComponents
インスタンスを構築します。build
(boolean encoded) コンポーネントがすでに完全にエンコードされている場合にUriComponents
インスタンスを作成するbuild()
のバリアント。URI
SE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。URI
SE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。buildAndExpand
(ObjectSE... uriVariableValues) UriComponents
インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。buildAndExpand
(MapSE<StringSE, ?> uriVariables) UriComponents
インスタンスを作成し、URI テンプレート変数をマップの値で置き換えます。clone()
オブジェクトのclone()
メソッドのパブリック宣言。このUriComponentsBuilder
を複製します。final UriComponentsBuilder
encode()
ビルド時に URI テンプレートを事前にエンコードし、展開時に URI 変数を個別にエンコードするようリクエストします。"UTF-8" 以外の文字セットを持つencode()
のバリアント。URI フラグメントを設定します。static UriComponentsBuilder
fromHttpRequest
(HttpRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。static UriComponentsBuilder
fromHttpUrl
(StringSE httpUrl) 使用すべきではありません。6.2 時点ではfromUriString(String)
が優先されます。7.0 で削除される予定です。static UriComponentsBuilder
fromOriginHeader
(StringSE origin) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。fromUriString(String)
を推奨します。7.0 で削除予定static UriComponentsBuilder
指定されたパスで初期化されるビルダーを作成します。static UriComponentsBuilder
指定されたURI
から初期化されるビルダーを作成します。static UriComponentsBuilder
fromUriString
(StringSE uri) UriComponentsBuilder.ParserType.RFC
解析をデフォルトとするfromUriString(String, ParserType)
のバリアント。static UriComponentsBuilder
fromUriString
(StringSE uri, UriComponentsBuilder.ParserType parserType) 指定された URI 文字列を解析して初期化されるビルダーを作成します。URI テンプレート変数を含む URI ホストを設定します。このビルダーのホストをクリアするには、null
にすることもできます。static UriComponentsBuilder
新しい空のビルダーを作成します。このビルダーのパスに追加します。pathSegment
(StringSE... pathSegments) パスセグメントを使用してパスに追加します。port
(int port) URI ポートを設定します。URI ポートを設定します。指定されたクエリ文字列をクエリパラメーターに解析します。パラメーターは'&'
で区切られ、その値がある場合は'='
で区切られます。queryParam
(StringSE name, ObjectSE... values) 指定されたクエリパラメーターを追加します。queryParam
(StringSE name, CollectionSE<?> values) コレクションを持つUriBuilder.queryParam(String, Object...)
のバリアント。queryParamIfPresent
(StringSE name, OptionalSE<?> value) 指定されたOptional
SE に値がある場合は、UriBuilder.queryParam(String, Object...)
またはUriBuilder.queryParam(String, Collection)
のいずれかにデリゲートします。値が空の場合は、クエリパラメーターはまったく追加されません。queryParams
(MultiValueMap<StringSE, StringSE> params) 複数のクエリパラメーターと値を追加します。replacePath
(StringSE path) 現在のパスを上書きします。replaceQuery
(StringSE query) 既存のクエリパラメーターをクリアしてから、UriBuilder.query(String)
に委譲します。replaceQueryParam
(StringSE name, ObjectSE... values) 既存の値を置き換えるクエリパラメーター値を設定します。値が指定されていない場合、クエリパラメーターは削除されます。replaceQueryParam
(StringSE name, CollectionSE<?> values) コレクションを持つUriBuilder.replaceQueryParam(String, Object...)
のバリアント。replaceQueryParams
(MultiValueMap<StringSE, StringSE> params) 既存の値をすべて削除した後、クエリパラメーター値を設定します。URI テンプレート変数を含む URI スキームを設定します。このビルダーのスキームをクリアするには、null
にすることもできます。URI スキーム固有部分を設定します。URI 文字列を作成します。指定された URI のコンポーネントからこのビルダーのコンポーネントを初期化します。uriComponents
(UriComponents uriComponents) 指定されたUriComponents
インスタンスの値から、このビルダーの個々の URI コンポーネントを設定または追加します。uriVariables
(MapSE<StringSE, ObjectSE> uriVariables) ビルド時に展開される URI 変数を構成します。URI テンプレート変数を含む URI ユーザー情報を設定します。このビルダーのユーザー情報をクリアするには、null
にすることもできます。
コンストラクターの詳細
UriComponentsBuilder
protected UriComponentsBuilder()デフォルトのコンストラクター。直接インスタンス化を防ぐために保護されています。UriComponentsBuilder
指定された UriComponentsBuilder のディープコピーを作成します。- パラメーター:
other
- コピー元の他のビルダー- 導入:
- 4.1.3
メソッドの詳細
newInstance
新しい空のビルダーを作成します。- 戻り値:
- 新しい
UriComponentsBuilder
fromPath
指定されたパスで初期化されるビルダーを作成します。- パラメーター:
path
- 初期化するパス- 戻り値:
- 新しい
UriComponentsBuilder
fromUri
指定されたURI
から初期化されるビルダーを作成します。注意 : 結果のビルダーのコンポーネントは完全にエンコードされた(未加工)フォームになり、さらに変更を加えると、たとえば
UriUtils
のメソッドを介して、完全にエンコードされた値を提供する必要があります。さらに、コンポーネントがエンコードされていることを示すために、値が "true" のbuild(boolean)
を使用してUriComponents
インスタンスを構築してください。- パラメーター:
uri
- 初期化する URI- 戻り値:
- 新しい
UriComponentsBuilder
fromUriString
UriComponentsBuilder.ParserType.RFC
解析をデフォルトとするfromUriString(String, ParserType)
のバリアント。fromUriString
public static UriComponentsBuilder fromUriString(StringSE uri, UriComponentsBuilder.ParserType parserType) throws InvalidUrlException 指定された URI 文字列を解析して初期化されるビルダーを作成します。注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに
'='
または'&'
文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。String uriString = "/hotels/42?filter={value}"; UriComponentsBuilder.fromUriString(uriString).buildAndExpand("hot&cold");
- パラメーター:
uri
- 初期化する URI 文字列parserType
- 使用する解析アルゴリズム- 戻り値:
- 新しい
UriComponentsBuilder
- 例外:
InvalidUrlException
-uri
を解析できない場合- 導入:
- 6.2
fromHttpUrl
@DeprecatedSE(since="6.2") public static UriComponentsBuilder fromHttpUrl(StringSE httpUrl) throws InvalidUrlException 使用すべきではありません。6.2 時点ではfromUriString(String)
が優先されます。7.0 で削除される予定です。指定された HTTP URL 文字列から URI コンポーネントビルダーを作成します。注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに
'='
または'&'
文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。String urlString = "https://example.com/hotels/42?filter={value}"; UriComponentsBuilder.fromHttpUrl(urlString).buildAndExpand("hot&cold");
- パラメーター:
httpUrl
- ソース URI- 戻り値:
- URI の URI コンポーネント
- 例外:
InvalidUrlException
fromHttpRequest
@DeprecatedSE(since="6.1", forRemoval=true) public static UriComponentsBuilder fromHttpRequest(HttpRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。指定された HttpRequest に関連付けられた URI から新しいUriComponents
オブジェクトを作成すると同時に、ヘッダー "Forwarded" (RFC 7239)、または "X-Forwarded-Host"、"X-Forwarded-Port"、「X-Forwarded 「転送」が見つからない場合は「プロト」。- パラメーター:
request
- ソースリクエスト- 戻り値:
- URI の URI コンポーネント
- 導入:
- 4.1.5
fromOriginHeader
@DeprecatedSE(since="6.2", forRemoval=true) public static UriComponentsBuilder fromOriginHeader(StringSE origin) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。fromUriString(String)
を推奨します。7.0 で削除予定HTTP リクエストの "Origin" ヘッダーを解析してインスタンスを作成します。- 関連事項:
encode
ビルド時に URI テンプレートを事前にエンコードし、展開時に URI 変数を個別にエンコードするようリクエストします。UriComponents.encode()
と比較すると、このメソッドは URI テンプレートに対して同じ効果があります。つまり、各 URI コンポーネントは、非 ASCII 文字および不正な(URI コンポーネント型内の)文字をエスケープされたオクテットに置き換えることでエンコードされます。ただし、URI 変数はより厳密にエンコードされており、予約された意味を持つ文字もエスケープされます。ほとんどの場合、このメソッドは URI 変数を完全にエンコードされる不透明(OPAQUE)データとして扱うため、期待される結果が得られる可能性が高くなりますが、
UriComponents.encode()
は、予約文字を含む URI 変数を意図的に展開する場合に役立ちます。たとえば ';' パスでは有効ですが、意味は予約されています。このメソッドは ";" を置き換えます。URI 変数には "%3B" が含まれますが、URI テンプレートには含まれません。対照的に、
UriComponents.encode()
は ";" を置き換えません。それはパス内の正当な文字です。URI 変数をまったく展開しない場合は、
UriComponents.encode()
の使用をお勧めします。これは、偶然に URI 変数のように見えるものもすべてエンコードするためです。- 導入:
- 5.0.8
encode
"UTF-8" 以外の文字セットを持つencode()
のバリアント。- パラメーター:
charset
- エンコードに使用する文字セット- 導入:
- 5.0.8
build
このビルダーに含まれるさまざまなコンポーネントからUriComponents
インスタンスを構築します。- 戻り値:
- URI コンポーネント
build
コンポーネントがすでに完全にエンコードされている場合にUriComponents
インスタンスを作成するbuild()
のバリアント。これは、ビルダーがfromUri(URI)
を介して作成された場合などに役立ちます。- パラメーター:
encoded
- このビルダーのコンポーネントがすでにエンコードされているかどうか- 戻り値:
- URI コンポーネント
- 例外:
IllegalArgumentExceptionSE
- エンコードされているはずの不正な文字がコンポーネントに含まれている場合。
buildAndExpand
UriComponents
インスタンスを作成し、URI テンプレート変数をマップの値で置き換えます。これは、build()
への呼び出しとUriComponents.expand(Map)
への呼び出しを組み合わせたショートカットメソッドです。- パラメーター:
uriVariables
- URI 変数のマップ- 戻り値:
- 拡張された値を持つ URI コンポーネント
buildAndExpand
UriComponents
インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。これは、build()
への呼び出しとUriComponents.expand(Object...)
への呼び出しを組み合わせたショートカットメソッドです。- パラメーター:
uriVariableValues
- URI 変数値- 戻り値:
- 拡張された値を持つ URI コンポーネント
build
インターフェースからコピーされた説明:UriBuilder
URI
SE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。- 次で指定:
- インターフェース
UriBuilder
のbuild
- パラメーター:
uriVariables
- URI 変数のマップ- 戻り値:
- URI
build
インターフェースからコピーされた説明:UriBuilder
URI
SE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。- 次で指定:
- インターフェース
UriBuilder
のbuild
- パラメーター:
uriVariables
- URI 変数のマップ- 戻り値:
- URI
toUriString
URI 文字列を作成します。事実上、文字列表現を構築、エンコード、返すためのショートカット:
String uri = builder.build().encode().toUriString()
ただし、
URI variables
が提供されている場合、URI テンプレートは URI 変数とは別に事前にエンコードされます(詳細についてはencode()
を参照)。String uri = builder.encode().build().toUriString()
- 次で指定:
- インターフェース
UriBuilder
のtoUriString
- 導入:
- 4.1
- 関連事項:
uri
指定された URI のコンポーネントからこのビルダーのコンポーネントを初期化します。- パラメーター:
uri
- URI- 戻り値:
- この UriComponentsBuilder
uriComponents
指定されたUriComponents
インスタンスの値から、このビルダーの個々の URI コンポーネントを設定または追加します。各コンポーネントのセマンティクス(つまり、設定と追加)については、このクラスのビルダーメソッドを確認してください。たとえば、
host(String)
が設定され、path(String)
が追加されます。- パラメーター:
uriComponents
- コピー元の UriComponents- 戻り値:
- この UriComponentsBuilder
scheme
インターフェースからコピーされた説明:UriBuilder
URI テンプレート変数を含む URI スキームを設定します。このビルダーのスキームをクリアするには、null
にすることもできます。- 次で指定:
- インターフェース
UriBuilder
のscheme
- パラメーター:
scheme
- URI スキーム
schemeSpecificPart
- パラメーター:
ssp
- URI スキーム固有部分には、URI テンプレートパラメーターが含まれる場合があります- 戻り値:
- この UriComponentsBuilder
userInfo
インターフェースからコピーされた説明:UriBuilder
URI テンプレート変数を含む URI ユーザー情報を設定します。このビルダーのユーザー情報をクリアするには、null
にすることもできます。- 次で指定:
- インターフェース
UriBuilder
のuserInfo
- パラメーター:
userInfo
- URI ユーザー情報
host
インターフェースからコピーされた説明:UriBuilder
URI テンプレート変数を含む URI ホストを設定します。このビルダーのホストをクリアするには、null
にすることもできます。- 次で指定:
- インターフェース
UriBuilder
のhost
- パラメーター:
host
- URI ホスト
port
インターフェースからコピーされた説明:UriBuilder
URI ポートを設定します。-1
を渡すと、このビルダーのポートがクリアされます。- 次で指定:
- インターフェース
UriBuilder
のport
- パラメーター:
port
- URI ポート
port
インターフェースからコピーされた説明:UriBuilder
URI ポートを設定します。このメソッドは、ポートを URI 変数でパラメーター化する必要がある場合にのみ使用してください。それ以外の場合は、UriBuilder.port(int)
を使用します。null
を渡すと、このビルダーのポートがクリアされます。- 次で指定:
- インターフェース
UriBuilder
のport
- パラメーター:
port
- URI ポート
path
インターフェースからコピーされた説明:UriBuilder
このビルダーのパスに追加します。指定された値は、追加のスラッシュを挿入せずに、以前の
path
値にそのまま追加されます。例:builder.path("/first-").path("value/").path("/{id}").build("123") // Results is "/first-value/123"
対照的に、
pathSegment
は個々のパスセグメントの間にスラッシュを挿入します。例:builder.pathSegment("first-value", "second-value").path("/") // Results is "/first-value/second-value/"
結果のフルパスは、重複するスラッシュを排除するために正規化されます。
注意 : スラッシュを含む URI 変数値を
path
に挿入する場合、それらがエンコードされるかどうかは、構成されたエンコードモードによって異なります。詳細については、encode()
を参照してください。そうでない場合は、WebClient
またはRestTemplate
を介して間接的に URI を構築する場合は、そのencodingMode
を参照してください。リファレンスドキュメントの URI エンコーディングセクションも参照してください。- 次で指定:
- インターフェース
UriBuilder
のpath
- パラメーター:
path
- URI パス
pathSegment
インターフェースからコピーされた説明:UriBuilder
パスセグメントを使用してパスに追加します。例:builder.pathSegment("first-value", "second-value", "{id}").build("123") // Results is "/first-value/second-value/123"
スラッシュがパスセグメントに存在する場合、エンコードされます。
builder.pathSegment("ba/z", "{id}").build("a/b") // Results is "/ba%2Fz/a%2Fb"
末尾にスラッシュを挿入するには、UriBuilder.path(java.lang.String)
ビルダーメソッドを使用します。builder.pathSegment("first-value", "second-value").path("/") // Results is "/first-value/second-value/"
空のパスセグメントは無視されるため、結果のフルパスに重複するスラッシュは表示されません。
- 次で指定:
- インターフェース
UriBuilder
のpathSegment
- パラメーター:
pathSegments
- URI パスセグメント- 例外:
IllegalArgumentExceptionSE
replacePath
インターフェースからコピーされた説明:UriBuilder
現在のパスを上書きします。- 次で指定:
- インターフェース
UriBuilder
のreplacePath
- パラメーター:
path
- URI パス、または空のパスの場合はnull
query
インターフェースからコピーされた説明:UriBuilder
指定されたクエリ文字列をクエリパラメーターに解析します。パラメーターは'&'
で区切られ、その値がある場合は'='
で区切られます。クエリには、URI テンプレート変数が含まれる場合があります。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のquery
- パラメーター:
query
- クエリ文字列
replaceQuery
インターフェースからコピーされた説明:UriBuilder
既存のクエリパラメーターをクリアしてから、UriBuilder.query(String)
に委譲します。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のreplaceQuery
- パラメーター:
query
- クエリ文字列。null
値は、すべてのクエリパラメーターを削除します。
queryParam
インターフェースからコピーされた説明:UriBuilder
指定されたクエリパラメーターを追加します。パラメーター名と値の両方に、後で値から展開される URI テンプレート変数を含めることができます。値が指定されていない場合、結果の URI にはクエリパラメーター名のみが含まれます (例:"?foo=bar"
ではなく"?foo"
)。注意 : エンコードが適用される場合、
"="
や"&"
などのクエリパラメーター名または値で無効な文字のみがエンコードされます。RFC 3986 の構文規則に従って正当な他のすべてはエンコードされません。これには、エンコードされたスペースとしての解釈を避けるためにエンコードされる必要がある場合がある"+"
が含まれます。URI テンプレート変数と変数値のより厳密なエンコーディングを使用して、より厳密なエンコーディングを適用できます。詳細については、Spring Framework リファレンスの「URI エンコーディング」セクションを参照してください。- 次で指定:
- インターフェース
UriBuilder
のqueryParam
- パラメーター:
name
- クエリパラメーター名values
- クエリパラメーター値- 関連事項:
queryParam
インターフェースからコピーされた説明:UriBuilder
コレクションを持つUriBuilder.queryParam(String, Object...)
のバリアント。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のqueryParam
- パラメーター:
name
- クエリパラメーター名values
- クエリパラメーター値- 関連事項:
queryParamIfPresent
インターフェースからコピーされた説明:UriBuilder
指定されたOptional
SE に値がある場合は、UriBuilder.queryParam(String, Object...)
またはUriBuilder.queryParam(String, Collection)
のいずれかにデリゲートします。値が空の場合は、クエリパラメーターはまったく追加されません。- 次で指定:
- インターフェース
UriBuilder
のqueryParamIfPresent
- パラメーター:
name
- クエリパラメーター名value
- オプション。空であるか、クエリパラメーター値を保持しています。
queryParams
複数のクエリパラメーターと値を追加します。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のqueryParams
- パラメーター:
params
- パラメーター- 導入:
- 4.0
replaceQueryParam
インターフェースからコピーされた説明:UriBuilder
既存の値を置き換えるクエリパラメーター値を設定します。値が指定されていない場合、クエリパラメーターは削除されます。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のreplaceQueryParam
- パラメーター:
name
- クエリパラメーター名values
- クエリパラメーター値- 関連事項:
replaceQueryParam
インターフェースからコピーされた説明:UriBuilder
コレクションを持つUriBuilder.replaceQueryParam(String, Object...)
のバリアント。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のreplaceQueryParam
- パラメーター:
name
- クエリパラメーター名values
- クエリパラメーター値- 関連事項:
replaceQueryParams
既存の値をすべて削除した後、クエリパラメーター値を設定します。注: は、
UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。- 次で指定:
- インターフェース
UriBuilder
のreplaceQueryParams
- パラメーター:
params
- クエリパラメーター名- 導入:
- 4.2
fragment
インターフェースからコピーされた説明:UriBuilder
URI フラグメントを設定します。指定されたフラグメントには URI テンプレート変数が含まれる場合があり、このビルダーのフラグメントをクリアするためにnull
になる場合もあります。- 次で指定:
- インターフェース
UriBuilder
のfragment
- パラメーター:
fragment
- URI フラグメント
uriVariables
ビルド時に展開される URI 変数を構成します。指定された変数は、必要なすべての変数のサブセットである場合があります。ビルド時には、利用可能なものが展開されますが、未解決の URI プレースホルダーはそのまま残り、後で展開できます。
UriComponents.expand(Map)
またはbuildAndExpand(Map)
とは対照的に、このメソッドは、UriComponents
インスタンスをまだ構築せずに URI 変数を提供する必要がある場合、またはホストやポートなどの共有デフォルト値を事前に展開する場合に便利です。- パラメーター:
uriVariables
- 使用する URI 変数- 戻り値:
- この UriComponentsBuilder
- 導入:
- 5.0.8
clone
オブジェクトのclone()
メソッドのパブリック宣言。cloneBuilder()
へのデリゲート。cloneBuilder
このUriComponentsBuilder
を複製します。- 戻り値:
- クローン化された
UriComponentsBuilder
オブジェクト - 導入:
- 4.2.7
ForwardedHeaderUtils.adaptFromForwardedHeaders(java.net.URI, org.springframework.http.HttpHeaders)
を推奨します。7.0 で削除予定