クラス MediaTypeRequestMatcher

java.lang.ObjectSE
org.springframework.security.web.util.matcher.MediaTypeRequestMatcher
実装されたすべてのインターフェース:
RequestMatcher

public final class MediaTypeRequestMatcher extends ObjectSE implements RequestMatcher
ContentNegotiationStrategy から解決された MediaType に基づいて、一致する HttpServletRequest を許可します。デフォルトでは、照合プロセスは次を実行します。
  • ContentNegotiationStrategy は、現在のリクエストの MediaType を解決します
  • コンストラクターに渡された各一致する MediaType は、ContentNegotiationStrategy から解決された MediaType インスタンスと比較されます。
  • matchingMediaTypes の 1 つが、ContentNegotiationStrategy から返された解決済み MediaType の 1 つと互換性がある場合、true を返します。
例: 次の例を考えます
 GET /
 Accept: application/json

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 assert matcher.matches(request) == true // returns true
 
次も true を返します
 GET /
 Accept: */*

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 assert matcher.matches(request) == true // returns true
 

メディア型を無視する

特定の種類のメディア型を無視したい場合があります。例: "application/json" で一致させたいが、"*/" は無視する場合があります。Web ブラウザーによって送信されます。
 GET /
 Accept: */*

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 matcher.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL));
 assert matcher.matches(request) == false // returns false
 
 GET /
 Accept: application/json

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 matcher.setIgnoredMediaTypes(Collections.singleton(MediaType.ALL));
 assert matcher.matches(request) == true // returns true
 

正確なメディア型の比較

デフォルトでは、ContentNegotiationStrategy によって検出された MediaType が matchingMediaTypes の MediaType.isCompatibleWith(MediaType) に対して true を返す限り、一致の結果は true です。ただし、完全一致を実行したい場合があります。これは、次の例を使用して実行できます。
 GET /
 Accept: application/json

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 matcher.setUseEquals(true);
 assert matcher.matches(request) == true // returns true
 
 GET /
 Accept: application/*

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 matcher.setUseEquals(true);
 assert matcher.matches(request) == false // returns false
 
 GET /
 Accept: */*

 ContentNegotiationStrategy negotiationStrategy = new HeaderContentNegotiationStrategy()
 MediaTypeRequestMatcher matcher = new MediaTypeRequestMatcher(negotiationStrategy, MediaType.APPLICATION_JSON);
 matcher.setUseEquals(true);
 assert matcher.matches(request) == false // returns false
 
導入:
3.2
  • ネストされたクラスのサマリー

    インターフェース org.springframework.security.web.util.matcher.RequestMatcher から継承されたネストクラス / インターフェース

    RequestMatcher.MatchResult
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
    MediaTypeRequestMatcher(CollectionSE<org.springframework.http.MediaType> matchingMediaTypes)
    インスタンスを作成します
    MediaTypeRequestMatcher(org.springframework.http.MediaType... matchingMediaTypes)
    インスタンスを作成します
    MediaTypeRequestMatcher(org.springframework.web.accept.ContentNegotiationStrategy contentNegotiationStrategy, CollectionSE<org.springframework.http.MediaType> matchingMediaTypes)
    インスタンスを作成します
    MediaTypeRequestMatcher(org.springframework.web.accept.ContentNegotiationStrategy contentNegotiationStrategy, org.springframework.http.MediaType... matchingMediaTypes)
    インスタンスを作成します
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    matches(jakarta.servlet.http.HttpServletRequest request)
    戦略によって実装されたルールが提供されたリクエストと一致するかどうかを決定します。
    void
    setIgnoredMediaTypes(SetSE<org.springframework.http.MediaType> ignoredMediaTypes)
    ContentNegotiationStrategy から無視するように MediaType を設定します。
    void
    setUseEquals(boolean useEquals)
    true に設定すると、正確な MediaType に一致し、そうでない場合は MediaType.isCompatibleWith(MediaType) を使用します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE

    インターフェース org.springframework.security.web.util.matcher.RequestMatcher から継承されたメソッド

    matcher
  • コンストラクターの詳細

    • MediaTypeRequestMatcher

      public MediaTypeRequestMatcher(org.springframework.http.MediaType... matchingMediaTypes)
      インスタンスを作成します
      パラメーター:
      matchingMediaTypes - http リクエストを行う MediaType
      導入:
      5.2
    • MediaTypeRequestMatcher

      public MediaTypeRequestMatcher(CollectionSE<org.springframework.http.MediaType> matchingMediaTypes)
      インスタンスを作成します
      パラメーター:
      matchingMediaTypes - http リクエストを行う MediaType
      導入:
      5.2
    • MediaTypeRequestMatcher

      public MediaTypeRequestMatcher(org.springframework.web.accept.ContentNegotiationStrategy contentNegotiationStrategy, org.springframework.http.MediaType... matchingMediaTypes)
      インスタンスを作成します
      パラメーター:
      contentNegotiationStrategy - 使用する ContentNegotiationStrategy 
      matchingMediaTypes - RequestMatcher を true に戻す MediaType 
    • MediaTypeRequestMatcher

      public MediaTypeRequestMatcher(org.springframework.web.accept.ContentNegotiationStrategy contentNegotiationStrategy, CollectionSE<org.springframework.http.MediaType> matchingMediaTypes)
      インスタンスを作成します
      パラメーター:
      contentNegotiationStrategy - 使用する ContentNegotiationStrategy 
      matchingMediaTypes - RequestMatcher を true に戻す MediaType 
  • メソッドの詳細

    • matches

      public boolean matches(jakarta.servlet.http.HttpServletRequest request)
      インターフェースからコピーされた説明: RequestMatcher
      戦略によって実装されたルールが提供されたリクエストと一致するかどうかを決定します。
      次で指定:
      インターフェース RequestMatchermatches 
      パラメーター:
      request - 一致を確認するリクエスト
      戻り値:
      リクエストが一致する場合は true、そうでない場合は false
    • setUseEquals

      public void setUseEquals(boolean useEquals)
      true に設定すると、正確な MediaType に一致し、そうでない場合は MediaType.isCompatibleWith(MediaType) を使用します。
      パラメーター:
      useEquals - 等しい比較を使用するかどうかを指定します。
    • setIgnoredMediaTypes

      public void setIgnoredMediaTypes(SetSE<org.springframework.http.MediaType> ignoredMediaTypes)
      ContentNegotiationStrategy から無視するように MediaType を設定します。これは、たとえば MediaType.APPLICATION_JSON で一致させたいが MediaType.ALL を無視したい場合に便利です。
      パラメーター:
      ignoredMediaTypes - ContentNegotiationStrategy から無視する MediaType
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString