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) URI SE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。 |
URISE | build(ObjectSE... uriVariables) URI SE インスタンスを構築し、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) 指定された Optional SE に値がある場合は、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, waitSE
protected UriComponentsBuilder()
protected UriComponentsBuilder(UriComponentsBuilder other)
other
- コピー元の他のビルダー public static UriComponentsBuilder newInstance()
UriComponentsBuilder
public static UriComponentsBuilder fromPath(StringSE path)
path
- 初期化するパス UriComponentsBuilder
public static UriComponentsBuilder fromUri(URISE uri)
URI
から初期化されるビルダーを作成します。 注意 : 結果のビルダーのコンポーネントは完全にエンコードされた(未加工)フォームになり、さらに変更を加えると、たとえば UriUtils
のメソッドを介して、完全にエンコードされた値を提供する必要があります。さらに、コンポーネントがエンコードされていることを示すために、値が "true" の build(boolean)
を使用して UriComponents
インスタンスを構築してください。
uri
- 初期化する URIUriComponentsBuilder
public static UriComponentsBuilder fromUriString(StringSE uri)
注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに '='
または '&'
文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。
String uriString = "/hotels/42?filter={value}"; UriComponentsBuilder.fromUriString(uriString).buildAndExpand("hot&cold");
uri
- 初期化する URI 文字列 UriComponentsBuilder
public 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)
UriBuilder
URI
SE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。UriBuilder
の build
uriVariables
- URI 変数のマップ public URISE build(MapSE<StringSE,?> uriVariables)
UriBuilder
URI
SE インスタンスを構築し、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)
UriBuilder
null
にすることもできます。UriBuilder
の scheme
scheme
- URI スキーム public UriComponentsBuilder schemeSpecificPart(StringSE ssp)
ssp
- URI スキーム固有部分には、URI テンプレートパラメーターが含まれる場合があります public UriComponentsBuilder userInfo(@Nullable StringSE userInfo)
UriBuilder
null
にすることもできます。UriBuilder
の userInfo
userInfo
- URI ユーザー情報 public UriComponentsBuilder host(@Nullable StringSE host)
UriBuilder
null
にすることもできます。UriBuilder
の host
host
- URI ホスト public UriComponentsBuilder port(int port)
UriBuilder
-1
を渡すと、このビルダーのポートがクリアされます。UriBuilder
の port
port
- URI ポート public UriComponentsBuilder port(@Nullable StringSE port)
UriBuilder
UriBuilder.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 パスセグメント IllegalArgumentExceptionSE
public UriComponentsBuilder replacePath(@Nullable StringSE path)
UriBuilder
UriBuilder
の 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)
UriBuilder
UriBuilder.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)
UriBuilder
UriBuilder.queryParam(String, Object...)
のバリアント。 注: は、UriBuilder.queryParam(String, Object...)
の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。
UriBuilder
の queryParam
name
- クエリパラメーター名 values
- クエリパラメーター値 UriBuilder.queryParam(String, Object...)
public UriComponentsBuilder queryParamIfPresent(StringSE name, OptionalSE<?> value)
UriBuilder
Optional
SE に値がある場合は、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)
UriBuilder
UriBuilder.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)
UriBuilder
null
になる場合もあります。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
オブジェクト