クラス 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()のバリアント。URISE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。URISE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。buildAndExpand(ObjectSE... uriVariableValues) UriComponentsインスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。buildAndExpand(MapSE<StringSE, ?> uriVariables) UriComponentsインスタンスを作成し、URI テンプレート変数をマップの値で置き換えます。clone()オブジェクトのclone()メソッドのパブリック宣言。このUriComponentsBuilderを複製します。final UriComponentsBuilderencode()ビルド時に URI テンプレートを事前にエンコードし、展開時に URI 変数を個別にエンコードするようリクエストします。"UTF-8" 以外の文字セットを持つencode()のバリアント。URI フラグメントを設定します。static UriComponentsBuilderfromHttpRequest(HttpRequest request) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。static UriComponentsBuilderfromHttpUrl(StringSE httpUrl) 使用すべきではありません。6.2 時点ではfromUriString(String)が優先されます。7.0 で削除される予定です。static UriComponentsBuilderfromOriginHeader(StringSE origin) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。fromUriString(String)を推奨します。7.0 で削除予定static UriComponentsBuilder指定されたパスで初期化されるビルダーを作成します。static UriComponentsBuilder指定されたURIから初期化されるビルダーを作成します。static UriComponentsBuilderfromUriString(StringSE uri) UriComponentsBuilder.ParserType.RFC解析をデフォルトとするfromUriString(String, ParserType)のバリアント。static UriComponentsBuilderfromUriString(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) 指定されたOptionalSE に値がある場合は、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
インターフェースからコピーされた説明:UriBuilderURISE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。- 次で指定:
- インターフェース
UriBuilderのbuild - パラメーター:
uriVariables- URI 変数のマップ- 戻り値:
- URI
build
インターフェースからコピーされた説明:UriBuilderURISE インスタンスを構築し、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
インターフェースからコピーされた説明:UriBuilderURI テンプレート変数を含む URI スキームを設定します。このビルダーのスキームをクリアするには、nullにすることもできます。- 次で指定:
- インターフェース
UriBuilderのscheme - パラメーター:
scheme- URI スキーム
schemeSpecificPart
- パラメーター:
ssp- URI スキーム固有部分には、URI テンプレートパラメーターが含まれる場合があります- 戻り値:
- この UriComponentsBuilder
userInfo
インターフェースからコピーされた説明:UriBuilderURI テンプレート変数を含む URI ユーザー情報を設定します。このビルダーのユーザー情報をクリアするには、nullにすることもできます。- 次で指定:
- インターフェース
UriBuilderのuserInfo - パラメーター:
userInfo- URI ユーザー情報
host
インターフェースからコピーされた説明:UriBuilderURI テンプレート変数を含む URI ホストを設定します。このビルダーのホストをクリアするには、nullにすることもできます。- 次で指定:
- インターフェース
UriBuilderのhost - パラメーター:
host- URI ホスト
port
インターフェースからコピーされた説明:UriBuilderURI ポートを設定します。-1を渡すと、このビルダーのポートがクリアされます。- 次で指定:
- インターフェース
UriBuilderのport - パラメーター:
port- URI ポート
port
インターフェースからコピーされた説明:UriBuilderURI ポートを設定します。このメソッドは、ポートを 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指定されたOptionalSE に値がある場合は、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
インターフェースからコピーされた説明:UriBuilderURI フラグメントを設定します。指定されたフラグメントには 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 で削除予定