クラス UriComponentsBuilder

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

public class UriComponentsBuilder extends ObjectSE implements UriBuilder, CloneableSE
UriComponents 用のビルダー。次のように使用します。
  1. ファクトリメソッド(例: fromUriString(String))を使用してビルダーを作成します。
  2. インスタンスメソッドを通じて URI コンポーネント (スキーム、ホスト、パスなど) を設定します。
  3. UriComponents をビルドします。
  4. マップ、配列、変数値から URI 変数を展開します。
  5. UriComponents.encode() 経由でエンコードします。
  6. 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
関連事項:
  • コンストラクターの詳細

    • 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) throws InvalidUrlException
      UriComponentsBuilder.ParserType.RFC 解析をデフォルトとする fromUriString(String, ParserType) のバリアント。
      例外:
      InvalidUrlException
    • 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

      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