public class UriComponentsBuilder extends ObjectSE implements UriBuilder, CloneableSE
UriComponents のビルダー。典型的な使用箇所は次のとおりです。
UriComponentsBuilder を作成します (fromPath(String) や fromUri(URI) など)scheme(String)、userInfo(String)、host(String)、port(int)、path(String)、pathSegment(String...)、queryParam(String, Object...)、fragment(String) を介してさまざまな URI コンポーネントを設定します。build() メソッドを使用して UriComponents インスタンスを構築します。newInstance(), fromPath(String), fromUri(URI)| 修飾子 | コンストラクターと説明 |
|---|---|
protected | UriComponentsBuilder() デフォルトコンストラクター。 |
protected | UriComponentsBuilder(UriComponentsBuilder other) 指定された UriComponentsBuilder のディープコピーを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
UriComponents | build() このビルダーに含まれるさまざまなコンポーネントから UriComponents インスタンスを構築します。 |
UriComponents | build(boolean encoded) コンポーネントがすでに完全にエンコードされている場合に UriComponents インスタンスを作成する build() のバリアント。 |
URISE | build(MapSE<StringSE,?> uriVariables)URISE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。 |
URISE | build(ObjectSE... uriVariables)URISE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。 |
UriComponents | buildAndExpand(MapSE<StringSE,?> uriVariables)UriComponents インスタンスを作成し、URI テンプレート変数をマップの値で置き換えます。 |
UriComponents | buildAndExpand(ObjectSE... uriVariableValues)UriComponents インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。 |
ObjectSE | clone() オブジェクトの clone() メソッドのパブリック宣言。 |
UriComponentsBuilder | cloneBuilder() この UriComponentsBuilder を複製します。 |
UriComponentsBuilder | encode() ビルド時に URI テンプレートを事前にエンコードし、展開時に URI 変数を個別にエンコードするようリクエストします。 |
UriComponentsBuilder | encode(CharsetSE charset) "UTF-8" 以外の文字セットを持つ encode() のバリアント。 |
UriComponentsBuilder | fragment(StringSE fragment)URI フラグメントを設定します。 |
static UriComponentsBuilder | fromHttpRequest(HttpRequest request) 指定された HttpRequest に関連付けられた URI から新しい UriComponents オブジェクトを作成すると同時に、ヘッダー "Forwarded" (RFC 7239)、または "X-Forwarded-Host"、"X-Forwarded-Port"、「X-Forwarded 「転送」が見つからない場合は「プロト」。 |
static UriComponentsBuilder | fromHttpUrl(StringSE httpUrl) 指定された HTTP URL 文字列から URI コンポーネントビルダーを作成します。 |
static UriComponentsBuilder | fromOriginHeader(StringSE origin)HTTP リクエストの "Origin" ヘッダーを解析してインスタンスを作成します。 |
static UriComponentsBuilder | fromPath(StringSE path) 指定されたパスで初期化されるビルダーを作成します。 |
static UriComponentsBuilder | fromUri(URISE uri) 指定された URI から初期化されるビルダーを作成します。 |
static UriComponentsBuilder | fromUriString(StringSE uri) 指定された URI 文字列で初期化されるビルダーを作成します。 |
UriComponentsBuilder | host(StringSE host)URI テンプレート変数を含む URI ホストを設定します。このビルダーのホストをクリアするには、 null にすることもできます。 |
static UriComponentsBuilder | newInstance() 新しい空のビルダーを作成します。 |
static InetSocketAddressSE | parseForwardedFor(HttpRequest request, InetSocketAddressSE remoteAddress) 最初の「転送済み」を解析します: クライアントのアドレスを表す InetSocketAddress への for =... " または " X-Forwarded-For " ヘッダー値。 |
UriComponentsBuilder | path(StringSE path) このビルダーのパスに追加します。 |
UriComponentsBuilder | pathSegment(StringSE... pathSegments) パスセグメントを使用してパスに追加します。 |
UriComponentsBuilder | port(int port)URI ポートを設定します。 |
UriComponentsBuilder | port(StringSE port)URI ポートを設定します。 |
UriComponentsBuilder | query(StringSE query) 指定されたクエリ文字列をクエリパラメーターに解析します。パラメーターは '&' で区切られ、その値がある場合は '=' で区切られます。 |
UriComponentsBuilder | queryParam(StringSE name, CollectionSE<?> values) コレクションを持つ UriBuilder.queryParam(String, Object...) のバリアント。 |
UriComponentsBuilder | queryParam(StringSE name, ObjectSE... values) 指定されたクエリパラメーターを追加します。 |
UriComponentsBuilder | queryParamIfPresent(StringSE name, OptionalSE<?> value) 指定された OptionalSE に値がある場合は、UriBuilder.queryParam(String, Object...) または UriBuilder.queryParam(String, Collection) のいずれかにデリゲートします。値が空の場合は、クエリパラメーターはまったく追加されません。 |
UriComponentsBuilder | queryParams(MultiValueMap<StringSE, StringSE> params) 複数のクエリパラメーターと値を追加します。 |
UriComponentsBuilder | replacePath(StringSE path) 現在のパスを上書きします。 |
UriComponentsBuilder | replaceQuery(StringSE query) 既存のクエリパラメーターをクリアしてから、 UriBuilder.query(String) に委譲します。 |
UriComponentsBuilder | replaceQueryParam(StringSE name, CollectionSE<?> values) コレクションを持つ UriBuilder.replaceQueryParam(String, Object...) のバリアント。 |
UriComponentsBuilder | replaceQueryParam(StringSE name, ObjectSE... values) 既存の値を置き換えるクエリパラメーター値を設定します。値が指定されていない場合、クエリパラメーターは削除されます。 |
UriComponentsBuilder | replaceQueryParams(MultiValueMap<StringSE, StringSE> params) 既存の値をすべて削除した後、クエリパラメーター値を設定します。 |
UriComponentsBuilder | scheme(StringSE scheme)URI テンプレート変数を含む URI スキームを設定します。このビルダーのスキームをクリアするには、 null にすることもできます。 |
UriComponentsBuilder | schemeSpecificPart(StringSE ssp)URI スキーム固有部分を設定します。 |
StringSE | toUriString()URI 文字列を作成します。 |
UriComponentsBuilder | uri(URISE uri) 指定された URI のコンポーネントからこのビルダーのコンポーネントを初期化します。 |
UriComponentsBuilder | uriComponents(UriComponents uriComponents) 指定された UriComponents インスタンスの値から、このビルダーの個々の URI コンポーネントを設定または追加します。 |
UriComponentsBuilder | uriVariables(MapSE<StringSE, ObjectSE> uriVariables) ビルド時に展開される URI 変数を構成します。 |
UriComponentsBuilder | userInfo(StringSE userInfo)URI テンプレート変数を含む URI ユーザー情報を設定します。このビルダーのユーザー情報をクリアするには、 null にすることもできます。 |
equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected UriComponentsBuilder()
protected UriComponentsBuilder(UriComponentsBuilder other)
other - コピー元の他のビルダー public static UriComponentsBuilder newInstance()
UriComponentsBuilderpublic static UriComponentsBuilder fromPath(StringSE path)
path - 初期化するパス UriComponentsBuilderpublic static UriComponentsBuilder fromUri(URISE uri)
URI から初期化されるビルダーを作成します。 注意 : 結果のビルダーのコンポーネントは完全にエンコードされた(未加工)フォームになり、さらに変更を加えると、たとえば UriUtils のメソッドを介して、完全にエンコードされた値を提供する必要があります。さらに、コンポーネントがエンコードされていることを示すために、値が "true" の build(boolean) を使用して UriComponents インスタンスを構築してください。
uri - 初期化する URIUriComponentsBuilderpublic static UriComponentsBuilder fromUriString(StringSE uri)
注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに '=' または '&' 文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。
String uriString = "/hotels/42?filter={value}";
UriComponentsBuilder.fromUriString(uriString).buildAndExpand("hot&cold");
uri - 初期化する URI 文字列 UriComponentsBuilderpublic static UriComponentsBuilder fromHttpUrl(StringSE httpUrl)
注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに '=' または '&' 文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。
String urlString = "https://example.com/hotels/42?filter={value}";
UriComponentsBuilder.fromHttpUrl(urlString).buildAndExpand("hot&cold");
httpUrl - ソース URIpublic static UriComponentsBuilder fromHttpRequest(HttpRequest request)
UriComponents オブジェクトを作成すると同時に、ヘッダー "Forwarded" (RFC 7239)、または "X-Forwarded-Host"、"X-Forwarded-Port"、「X-Forwarded 「転送」が見つからない場合は「プロト」。request - ソースリクエスト parseForwardedFor(HttpRequest, InetSocketAddress)@Nullable public static InetSocketAddressSE parseForwardedFor(HttpRequest request, @Nullable InetSocketAddressSE remoteAddress)
InetSocketAddress への for =... " または " X-Forwarded-For " ヘッダー値。request - 転送されたヘッダーを含む可能性のあるヘッダーを含むリクエスト remoteAddress - 現在の remoteAddressInetSocketAddress、またはヘッダーが存在しない場合は null。public static UriComponentsBuilder fromOriginHeader(StringSE origin)
public final UriComponentsBuilder encode()
UriComponents.encode() と比較すると、このメソッドは URI テンプレートに対して同じ効果があります。つまり、各 URI コンポーネントは、非 ASCII 文字および不正な(URI コンポーネント型内の)文字をエスケープされたオクテットに置き換えることでエンコードされます。ただし、URI 変数はより厳密にエンコードされており、予約された意味を持つ文字もエスケープされます。
ほとんどの場合、このメソッドは URI 変数を完全にエンコードされる不透明(OPAQUE)データとして扱うため、期待される結果が得られる可能性が高くなりますが、UriComponents.encode() は、予約文字を含む URI 変数を意図的に展開する場合に役立ちます。
たとえば ';' パスでは有効ですが、意味は予約されています。このメソッドは ";" を置き換えます。URI 変数には "%3B" が含まれますが、URI テンプレートには含まれません。対照的に、UriComponents.encode() は ";" を置き換えません。それはパス内の正当な文字です。
URI 変数をまったく展開しない場合は、UriComponents.encode() の使用をお勧めします。これは、偶然に URI 変数のように見えるものもすべてエンコードするためです。
public UriComponentsBuilder encode(CharsetSE charset)
encode() のバリアント。charset - エンコードに使用する文字セット public UriComponents build()
UriComponents インスタンスを構築します。public UriComponents build(boolean encoded)
UriComponents インスタンスを作成する build() のバリアント。これは、ビルダーが fromUri(URI) を介して作成された場合などに役立ちます。encoded - このビルダーのコンポーネントがすでにエンコードされているかどうか IllegalArgumentExceptionSE - エンコードされているはずの不正な文字がコンポーネントに含まれている場合。public UriComponents buildAndExpand(MapSE<StringSE,?> uriVariables)
UriComponents インスタンスを作成し、URI テンプレート変数をマップの値で置き換えます。これは、build() への呼び出しと UriComponents.expand(Map) への呼び出しを組み合わせたショートカットメソッドです。uriVariables - URI 変数のマップ public UriComponents buildAndExpand(ObjectSE... uriVariableValues)
UriComponents インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。これは、build() への呼び出しと UriComponents.expand(Object...) への呼び出しを組み合わせたショートカットメソッドです。uriVariableValues - URI 変数値 public URISE build(ObjectSE... uriVariables)
UriBuilderURISE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。UriBuilder の build uriVariables - URI 変数のマップ public URISE build(MapSE<StringSE,?> uriVariables)
UriBuilderURISE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。UriBuilder の build uriVariables - URI 変数のマップ public StringSE toUriString()
事実上、文字列表現を構築、エンコード、返すためのショートカット:
String uri = builder.build().encode().toUriString()
ただし、URI variables が提供されている場合、URI テンプレートは URI 変数とは別に事前にエンコードされます(詳細については encode() を参照)。
String uri = builder.encode().build().toUriString()
UriComponents.toUriString()public UriComponentsBuilder uri(URISE uri)
uri - URIpublic UriComponentsBuilder uriComponents(UriComponents uriComponents)
UriComponents インスタンスの値から、このビルダーの個々の URI コンポーネントを設定または追加します。 各コンポーネントのセマンティクス(つまり、設定と追加)については、このクラスのビルダーメソッドを確認してください。たとえば、host(String) が設定され、path(String) が追加されます。
uriComponents - コピー元の UriComponentspublic UriComponentsBuilder scheme(@Nullable StringSE scheme)
UriBuildernull にすることもできます。UriBuilder の scheme scheme - URI スキーム public UriComponentsBuilder schemeSpecificPart(StringSE ssp)
ssp - URI スキーム固有部分には、URI テンプレートパラメーターが含まれる場合があります public UriComponentsBuilder userInfo(@Nullable StringSE userInfo)
UriBuildernull にすることもできます。UriBuilder の userInfo userInfo - URI ユーザー情報 public UriComponentsBuilder host(@Nullable StringSE host)
UriBuildernull にすることもできます。UriBuilder の host host - URI ホスト public UriComponentsBuilder port(int port)
UriBuilder-1 を渡すと、このビルダーのポートがクリアされます。UriBuilder の port port - URI ポート public UriComponentsBuilder port(@Nullable StringSE port)
UriBuilderUriBuilder.port(int) を使用します。null を渡すと、このビルダーのポートがクリアされます。UriBuilder の port port - URI ポート public UriComponentsBuilder path(StringSE 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 パス public UriComponentsBuilder pathSegment(StringSE... pathSegments) throws IllegalArgumentExceptionSE
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 パスセグメント IllegalArgumentExceptionSEpublic UriComponentsBuilder replacePath(@Nullable StringSE path)
UriBuilderUriBuilder の replacePath path - URI パス、または空のパスの場合は null public UriComponentsBuilder query(@Nullable StringSE query)
UriBuilder'&' で区切られ、その値がある場合は '=' で区切られます。クエリには、URI テンプレート変数が含まれる場合があります。 注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の query query - クエリ文字列 public UriComponentsBuilder replaceQuery(@Nullable StringSE query)
UriBuilderUriBuilder.query(String) に委譲します。 注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の replaceQuery query - クエリ文字列。null 値は、すべてのクエリパラメーターを削除します。public UriComponentsBuilder queryParam(StringSE name, ObjectSE... values)
UriBuilder"?foo=bar" の代わりに "?foo"。 注意 : エンコードが適用される場合、"=" や "&" などのクエリパラメーター名または値で無効な文字のみがエンコードされます。RFC 3986 の構文規則に従って正当な他のすべてはエンコードされません。これには、エンコードされたスペースとしての解釈を避けるためにエンコードされる必要がある場合がある "+" が含まれます。URI テンプレート変数と変数値のより厳密なエンコーディングを使用して、より厳密なエンコーディングを適用できます。詳細については、Spring Framework リファレンスの「URI エンコーディング」セクションを参照してください。
UriBuilder の queryParam name - クエリパラメーター名 values - クエリパラメーター値 UriBuilder.queryParam(String, Collection)public UriComponentsBuilder queryParam(StringSE name, @Nullable CollectionSE<?> values)
UriBuilderUriBuilder.queryParam(String, Object...) のバリアント。 注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の queryParam name - クエリパラメーター名 values - クエリパラメーター値 UriBuilder.queryParam(String, Object...)public UriComponentsBuilder queryParamIfPresent(StringSE name, OptionalSE<?> value)
UriBuilderOptionalSE に値がある場合は、UriBuilder.queryParam(String, Object...) または UriBuilder.queryParam(String, Collection) のいずれかにデリゲートします。値が空の場合は、クエリパラメーターはまったく追加されません。UriBuilder の queryParamIfPresent name - クエリパラメーター名 value - オプション。空であるか、クエリパラメーター値を保持しています。public UriComponentsBuilder queryParams(@Nullable MultiValueMap<StringSE,StringSE> params)
注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の queryParams params - パラメーター public UriComponentsBuilder replaceQueryParam(StringSE name, ObjectSE... values)
UriBuilder 注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の replaceQueryParam name - クエリパラメーター名 values - クエリパラメーター値 UriBuilder.replaceQueryParam(String, Collection)public UriComponentsBuilder replaceQueryParam(StringSE name, @Nullable CollectionSE<?> values)
UriBuilderUriBuilder.replaceQueryParam(String, Object...) のバリアント。 注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の replaceQueryParam name - クエリパラメーター名 values - クエリパラメーター値 UriBuilder.replaceQueryParam(String, Object...)public UriComponentsBuilder replaceQueryParams(@Nullable MultiValueMap<StringSE,StringSE> params)
注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder の replaceQueryParams params - クエリパラメーター名 public UriComponentsBuilder fragment(@Nullable StringSE fragment)
UriBuildernull になる場合もあります。UriBuilder の fragment fragment - URI フラグメント public UriComponentsBuilder uriVariables(MapSE<StringSE,ObjectSE> uriVariables)
指定された変数は、必要なすべての変数のサブセットである場合があります。ビルド時には、利用可能なものが展開されますが、未解決の URI プレースホルダーはそのまま残り、後で展開できます。
UriComponents.expand(Map) または buildAndExpand(Map) とは対照的に、このメソッドは、UriComponents インスタンスをまだ構築せずに URI 変数を提供する必要がある場合、またはホストやポートなどの共有デフォルト値を事前に展開する場合に便利です。
uriVariables - 使用する URI 変数 public ObjectSE clone()
clone() メソッドのパブリック宣言。cloneBuilder() へのデリゲート。public UriComponentsBuilder cloneBuilder()
UriComponentsBuilder を複製します。UriComponentsBuilder オブジェクト