クラス UriComponentsBuilder

java.lang.ObjectSE
org.springframework.web.util.UriComponentsBuilder
実装されたすべてのインターフェース:
CloneableSEUriBuilder
既知の直属サブクラス
ServletUriComponentsBuilder

public class UriComponentsBuilder extends ObjectSE implements UriBuilder, CloneableSE
UriComponents のビルダー。

典型的な使用箇所は次のとおりです。

  1. 静的ファクトリメソッドの 1 つで UriComponentsBuilder を作成します (fromPath(String)fromUri(URI) など)
  2. それぞれのメソッド(scheme(String)userInfo(String)host(String)port(int)path(String)pathSegment(String...)queryParam(String, Object...)fragment(String) を介してさまざまな URI コンポーネントを設定します。
  3. build() メソッドを使用して UriComponents インスタンスを構築します。
導入:
3.1
作成者:
Arjen Poutsma, Rossen Stoyanchev, Phillip Webb, Oliver Gierke, Brian Clozel, Sebastien Deleuze, Sam Brannen
関連事項:
  • コンストラクターの詳細

    • UriComponentsBuilder

      protected UriComponentsBuilder()
      デフォルトのコンストラクター。直接インスタンス化を防ぐために保護されています。
      関連事項:
    • UriComponentsBuilder

      protected UriComponentsBuilder(UriComponentsBuilder other)
      指定された UriComponentsBuilder のディープコピーを作成します。
      パラメーター:
      other - コピー元の他のビルダー
      導入:
      4.1.3
  • メソッドの詳細

    • newInstance

      public static UriComponentsBuilder newInstance()
      新しい空のビルダーを作成します。
      戻り値:
      新しい UriComponentsBuilder
    • fromPath

      public static UriComponentsBuilder fromPath(StringSE path)
      指定されたパスで初期化されるビルダーを作成します。
      パラメーター:
      path - 初期化するパス
      戻り値:
      新しい UriComponentsBuilder
    • fromUri

      public static UriComponentsBuilder fromUri(URISE uri)
      指定された URI から初期化されるビルダーを作成します。

      注意 : 結果のビルダーのコンポーネントは完全にエンコードされた(未加工)フォームになり、さらに変更を加えると、たとえば UriUtils のメソッドを介して、完全にエンコードされた値を提供する必要があります。さらに、コンポーネントがエンコードされていることを示すために、値が "true" の build(boolean) を使用して UriComponents インスタンスを構築してください。

      パラメーター:
      uri - 初期化する URI
      戻り値:
      新しい UriComponentsBuilder
    • fromUriString

      public static UriComponentsBuilder fromUriString(StringSE uri)
      指定された URI 文字列で初期化されるビルダーを作成します。

      注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに '=' または '&' 文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。

       String uriString = "/hotels/42?filter={value}";
       UriComponentsBuilder.fromUriString(uriString).buildAndExpand("hot&cold");
       
      パラメーター:
      uri - 初期化する URI 文字列
      戻り値:
      新しい UriComponentsBuilder
    • fromHttpUrl

      public static UriComponentsBuilder fromHttpUrl(StringSE httpUrl)
      指定された HTTP URL 文字列から URI コンポーネントビルダーを作成します。

      注意 : 予約文字の存在は、URI 文字列の正しい解析を妨げる可能性があります。たとえば、クエリパラメーターに '=' または '&' 文字が含まれている場合、クエリ文字列を明確に解析することはできません。正しい解析を可能にするために、そのような値を URI 変数に置き換える必要があります。

       String urlString = "https://example.com/hotels/42?filter={value}";
       UriComponentsBuilder.fromHttpUrl(urlString).buildAndExpand("hot&cold");
       
      パラメーター:
      httpUrl - ソース URI
      戻り値:
      URI の URI コンポーネント
    • 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
    • parseForwardedFor

      @DeprecatedSE(since="6.1", forRemoval=true) @Nullable public static InetSocketAddressSE parseForwardedFor(HttpRequest request, @Nullable InetSocketAddressSE remoteAddress)
      非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。
      最初の「転送済み」を解析します: クライアントのアドレスを表す InetSocketAddress への for =... " または " X-Forwarded-For " ヘッダー値。
      パラメーター:
      request - 転送されたヘッダーを含む可能性のあるヘッダーを含むリクエスト
      remoteAddress - 現在の remoteAddress
      戻り値:
      ホストとポートが抽出された InetSocketAddress、またはヘッダーが存在しない場合は null
      導入:
      5.3
    • fromOriginHeader

      public static UriComponentsBuilder fromOriginHeader(StringSE origin)
      HTTP リクエストの "Origin" ヘッダーを解析してインスタンスを作成します。
      関連事項:
    • encode

      public final UriComponentsBuilder 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

      public UriComponentsBuilder encode(CharsetSE charset)
      "UTF-8" 以外の文字セットを持つ encode() のバリアント。
      パラメーター:
      charset - エンコードに使用する文字セット
      導入:
      5.0.8
    • build

      public UriComponents build()
      このビルダーに含まれるさまざまなコンポーネントから UriComponents インスタンスを構築します。
      戻り値:
      URI コンポーネント
    • build

      public UriComponents build(boolean encoded)
      コンポーネントがすでに完全にエンコードされている場合に UriComponents インスタンスを作成する build() のバリアント。これは、ビルダーが fromUri(URI) を介して作成された場合などに役立ちます。
      パラメーター:
      encoded - このビルダーのコンポーネントがすでにエンコードされているかどうか
      戻り値:
      URI コンポーネント
      例外:
      IllegalArgumentExceptionSE - エンコードされているはずの不正な文字がコンポーネントに含まれている場合。
    • buildAndExpand

      public UriComponents buildAndExpand(MapSE<StringSE,?> uriVariables)
      UriComponents インスタンスを作成し、URI テンプレート変数をマップの値で置き換えます。これは、build() への呼び出しと UriComponents.expand(Map) への呼び出しを組み合わせたショートカットメソッドです。
      パラメーター:
      uriVariables - URI 変数のマップ
      戻り値:
      拡張された値を持つ URI コンポーネント
    • buildAndExpand

      public UriComponents buildAndExpand(ObjectSE... uriVariableValues)
      UriComponents インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。これは、build() への呼び出しと UriComponents.expand(Object...) への呼び出しを組み合わせたショートカットメソッドです。
      パラメーター:
      uriVariableValues - URI 変数値
      戻り値:
      拡張された値を持つ URI コンポーネント
    • build

      public URISE build(ObjectSE... uriVariables)
      インターフェースからコピーされた説明: UriBuilder
      URISE インスタンスを構築し、URI テンプレート変数を配列の値で置き換えます。
      次で指定:
      インターフェース UriBuilderbuild 
      パラメーター:
      uriVariables - URI 変数のマップ
      戻り値:
      URI
    • build

      public URISE build(MapSE<StringSE,?> uriVariables)
      インターフェースからコピーされた説明: UriBuilder
      URISE インスタンスを構築し、URI テンプレート変数をマップの値で置き換えます。
      次で指定:
      インターフェース UriBuilderbuild 
      パラメーター:
      uriVariables - URI 変数のマップ
      戻り値:
      URI
    • toUriString

      public StringSE toUriString()
      URI 文字列を作成します。

      事実上、文字列表現を構築、エンコード、返すためのショートカット:

       String uri = builder.build().encode().toUriString()
       

      ただし、URI variables が提供されている場合、URI テンプレートは URI 変数とは別に事前にエンコードされます(詳細については encode() を参照)。

       String uri = builder.encode().build().toUriString()
       
      次で指定:
      インターフェース UriBuildertoUriString 
      導入:
      4.1
      関連事項:
    • uri

      public UriComponentsBuilder uri(URISE uri)
      指定された URI のコンポーネントからこのビルダーのコンポーネントを初期化します。
      パラメーター:
      uri - URI
      戻り値:
      この UriComponentsBuilder
    • uriComponents

      public UriComponentsBuilder uriComponents(UriComponents uriComponents)
      指定された UriComponents インスタンスの値から、このビルダーの個々の URI コンポーネントを設定または追加します。

      各コンポーネントのセマンティクス(つまり、設定と追加)については、このクラスのビルダーメソッドを確認してください。たとえば、host(String) が設定され、path(String) が追加されます。

      パラメーター:
      uriComponents - コピー元の UriComponents
      戻り値:
      この UriComponentsBuilder
    • scheme

      public UriComponentsBuilder scheme(@Nullable StringSE scheme)
      インターフェースからコピーされた説明: UriBuilder
      URI テンプレート変数を含む URI スキームを設定します。このビルダーのスキームをクリアするには、null にすることもできます。
      次で指定:
      インターフェース UriBuilderscheme 
      パラメーター:
      scheme - URI スキーム
    • schemeSpecificPart

      public UriComponentsBuilder schemeSpecificPart(StringSE ssp)
      URI スキーム固有部分を設定します。呼び出されると、このメソッドは user-infohostportpath、および query を上書きします。
      パラメーター:
      ssp - URI スキーム固有部分には、URI テンプレートパラメーターが含まれる場合があります
      戻り値:
      この UriComponentsBuilder
    • userInfo

      public UriComponentsBuilder userInfo(@Nullable StringSE userInfo)
      インターフェースからコピーされた説明: UriBuilder
      URI テンプレート変数を含む URI ユーザー情報を設定します。このビルダーのユーザー情報をクリアするには、null にすることもできます。
      次で指定:
      インターフェース UriBuilderuserInfo 
      パラメーター:
      userInfo - URI ユーザー情報
    • host

      インターフェースからコピーされた説明: UriBuilder
      URI テンプレート変数を含む URI ホストを設定します。このビルダーのホストをクリアするには、null にすることもできます。
      次で指定:
      インターフェース UriBuilderhost 
      パラメーター:
      host - URI ホスト
    • port

      public UriComponentsBuilder port(int port)
      インターフェースからコピーされた説明: UriBuilder
      URI ポートを設定します。-1 を渡すと、このビルダーのポートがクリアされます。
      次で指定:
      インターフェース UriBuilderport 
      パラメーター:
      port - URI ポート
    • port

      インターフェースからコピーされた説明: UriBuilder
      URI ポートを設定します。このメソッドは、ポートを URI 変数でパラメーター化する必要がある場合にのみ使用してください。それ以外の場合は、UriBuilder.port(int) を使用します。null を渡すと、このビルダーのポートがクリアされます。
      次で指定:
      インターフェース UriBuilderport 
      パラメーター:
      port - URI ポート
    • path

      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 エンコーディングセクションも参照してください。

      次で指定:
      インターフェース UriBuilderpath 
      パラメーター:
      path - URI パス
    • pathSegment

      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/"
       

      空のパスセグメントは無視されるため、結果のフルパスに重複するスラッシュは表示されません。

      次で指定:
      インターフェース UriBuilderpathSegment 
      パラメーター:
      pathSegments - URI パスセグメント
      例外:
      IllegalArgumentExceptionSE
    • replacePath

      public UriComponentsBuilder replacePath(@Nullable StringSE path)
      インターフェースからコピーされた説明: UriBuilder
      現在のパスを上書きします。
      次で指定:
      インターフェース UriBuilderreplacePath 
      パラメーター:
      path - URI パス、または空のパスの場合は null 
    • query

      public UriComponentsBuilder query(@Nullable StringSE query)
      インターフェースからコピーされた説明: UriBuilder
      指定されたクエリ文字列をクエリパラメーターに解析します。パラメーターは '&' で区切られ、その値がある場合は '=' で区切られます。クエリには、URI テンプレート変数が含まれる場合があります。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderquery 
      パラメーター:
      query - クエリ文字列
    • replaceQuery

      public UriComponentsBuilder replaceQuery(@Nullable StringSE query)
      インターフェースからコピーされた説明: UriBuilder
      既存のクエリパラメーターをクリアしてから、UriBuilder.query(String) に委譲します。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderreplaceQuery 
      パラメーター:
      query - クエリ文字列。null 値は、すべてのクエリパラメーターを削除します。
    • queryParam

      public UriComponentsBuilder queryParam(StringSE name, @Nullable ObjectSE... values)
      インターフェースからコピーされた説明: UriBuilder
      指定されたクエリパラメーターを追加します。パラメーター名と値の両方に、後で値から展開される URI テンプレート変数を含めることができます。値が指定されていない場合、結果の URI にはクエリパラメーター名のみが含まれます。"?foo=bar" の代わりに "?foo"

      注意 : エンコードが適用される場合、"=" や "&" などのクエリパラメーター名または値で無効な文字のみがエンコードされます。RFC 3986 の構文規則に従って正当な他のすべてはエンコードされません。これには、エンコードされたスペースとしての解釈を避けるためにエンコードされる必要がある場合がある "+" が含まれます。URI テンプレート変数と変数値のより厳密なエンコーディングを使用して、より厳密なエンコーディングを適用できます。詳細については、Spring Framework リファレンスの「URI エンコーディング」セクションを参照してください。

      次で指定:
      インターフェース UriBuilderqueryParam 
      パラメーター:
      name - クエリパラメーター名
      values - クエリパラメーター値
      関連事項:
    • queryParam

      public UriComponentsBuilder queryParam(StringSE name, @Nullable CollectionSE<?> values)
      インターフェースからコピーされた説明: UriBuilder
      コレクションを持つ UriBuilder.queryParam(String, Object...) のバリアント。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderqueryParam 
      パラメーター:
      name - クエリパラメーター名
      values - クエリパラメーター値
      関連事項:
    • queryParamIfPresent

      public UriComponentsBuilder queryParamIfPresent(StringSE name, OptionalSE<?> value)
      インターフェースからコピーされた説明: UriBuilder
      指定された OptionalSE に値がある場合は、UriBuilder.queryParam(String, Object...) または UriBuilder.queryParam(String, Collection) のいずれかにデリゲートします。値が空の場合は、クエリパラメーターはまったく追加されません。
      次で指定:
      インターフェース UriBuilderqueryParamIfPresent 
      パラメーター:
      name - クエリパラメーター名
      value - オプション。空であるか、クエリパラメーター値を保持しています。
    • queryParams

      複数のクエリパラメーターと値を追加します。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderqueryParams 
      パラメーター:
      params - パラメーター
      導入:
      4.0
    • replaceQueryParam

      public UriComponentsBuilder replaceQueryParam(StringSE name, ObjectSE... values)
      インターフェースからコピーされた説明: UriBuilder
      既存の値を置き換えるクエリパラメーター値を設定します。値が指定されていない場合、クエリパラメーターは削除されます。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderreplaceQueryParam 
      パラメーター:
      name - クエリパラメーター名
      values - クエリパラメーター値
      関連事項:
    • replaceQueryParam

      public UriComponentsBuilder replaceQueryParam(StringSE name, @Nullable CollectionSE<?> values)
      インターフェースからコピーされた説明: UriBuilder
      コレクションを持つ UriBuilder.replaceQueryParam(String, Object...) のバリアント。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderreplaceQueryParam 
      パラメーター:
      name - クエリパラメーター名
      values - クエリパラメーター値
      関連事項:
    • replaceQueryParams

      public UriComponentsBuilder replaceQueryParams(@Nullable MultiValueMap<StringSE,StringSE> params)
      既存の値をすべて削除した後、クエリパラメーター値を設定します。

      注: は、UriBuilder.queryParam(String, Object...) の Javadoc を参照して、個々のクエリパラメーターの処理とエンコードに関する詳細を確認してください。

      次で指定:
      インターフェース UriBuilderreplaceQueryParams 
      パラメーター:
      params - クエリパラメーター名
      導入:
      4.2
    • fragment

      public UriComponentsBuilder fragment(@Nullable StringSE fragment)
      インターフェースからコピーされた説明: UriBuilder
      URI フラグメントを設定します。指定されたフラグメントには URI テンプレート変数が含まれる場合があり、このビルダーのフラグメントをクリアするために null になる場合もあります。
      次で指定:
      インターフェース UriBuilderfragment 
      パラメーター:
      fragment - URI フラグメント
    • uriVariables

      public UriComponentsBuilder uriVariables(MapSE<StringSE,ObjectSE> uriVariables)
      ビルド時に展開される URI 変数を構成します。

      指定された変数は、必要なすべての変数のサブセットである場合があります。ビルド時には、利用可能なものが展開されますが、未解決の URI プレースホルダーはそのまま残り、後で展開できます。

      UriComponents.expand(Map) または buildAndExpand(Map) とは対照的に、このメソッドは、UriComponents インスタンスをまだ構築せずに URI 変数を提供する必要がある場合、またはホストやポートなどの共有デフォルト値を事前に展開する場合に便利です。

      パラメーター:
      uriVariables - 使用する URI 変数
      戻り値:
      この UriComponentsBuilder
      導入:
      5.0.8
    • clone

      public ObjectSE clone()
      オブジェクトの clone() メソッドのパブリック宣言。cloneBuilder() へのデリゲート。
      オーバーライド:
      クラス ObjectSEclone 
    • cloneBuilder

      public UriComponentsBuilder cloneBuilder()
      この UriComponentsBuilder を複製します。
      戻り値:
      クローン化された UriComponentsBuilder オブジェクト
      導入:
      4.2.7