public abstract class AbstractMappingContentNegotiationStrategy extends MappingMediaTypeFileExtensionResolver implements ContentNegotiationStrategy
ContentNegotiationStrategy 実装の基本クラス。 最初に、リクエストからキー(例: "json"、"pdf" )を抽出する必要があります(例: ファイル拡張子、クエリパラメーター)。次に、そのようなマッピングを格納する基本クラス MappingMediaTypeFileExtensionResolver を介して、キーをメディア型に解決する必要があります。
handleNoMatch(org.springframework.web.context.request.NativeWebRequest, java.lang.String) メソッドを使用すると、サブクラスでメディア型を検索する追加の方法をプラグインできます(たとえば、Java Activation フレームワークまたは ServletContext.getMimeType(java.lang.String)EE を使用)。基本クラスを介して解決されたメディア型は、基本クラス MappingMediaTypeFileExtensionResolver に追加されます(つまり、新しいルックアップ用にキャッシュされます)。
| 修飾子と型 | フィールドと説明 |
|---|---|
protected Log | logger |
MEDIA_TYPE_ALL_LIST| コンストラクターと説明 |
|---|
AbstractMappingContentNegotiationStrategy(MapSE<StringSE, MediaType> mediaTypes) ファイル拡張子とメディア型の指定されたマップでインスタンスを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected abstract StringSE | getMediaTypeKey(NativeWebRequest request) メディア型の検索に使用するリクエストからキーを抽出します。 |
protected void | handleMatch(StringSE key, MediaType mediaType) キーが MappingMediaTypeFileExtensionResolver.lookupMediaType(java.lang.String) を介して正常に解決されたときに処理を提供するためにオーバーライドします。 |
protected MediaType | handleNoMatch(NativeWebRequest request, StringSE key) キーが経由で解決されない場合の処理を提供するためにオーバーライドします。 |
boolean | isIgnoreUnknownExtensions() |
boolean | isUseRegisteredExtensionsOnly() |
ListSE<MediaType> | resolveMediaTypeKey(NativeWebRequest webRequest, StringSE key) すでに抽出されたキーを受け入れる resolveMediaTypes(NativeWebRequest) の代替。 |
ListSE<MediaType> | resolveMediaTypes(NativeWebRequest webRequest) 指定されたリクエストをメディア型のリストに解決します。 |
void | setIgnoreUnknownExtensions(boolean ignoreUnknownExtensions) 不明なファイル拡張子を持つリクエストを無視するかどうか。 |
void | setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly) 登録されたマッピングのみを使用してファイル拡張子を検索するか、動的解決を使用するか(例: |
addMapping, getAllFileExtensions, getAllMediaTypes, getMediaTypes, lookupMediaType, resolveFileExtensionscloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected final Log logger
public void setUseRegisteredExtensionsOnly(boolean useRegisteredExtensionsOnly)
MediaTypeFactory などを使用)。 デフォルトでは、これは false に設定されています。
public boolean isUseRegisteredExtensionsOnly()
public void setIgnoreUnknownExtensions(boolean ignoreUnknownExtensions)
false に設定すると、HttpMediaTypeNotAcceptableException になります。 デフォルトでは、これは false に設定されていますが、PathExtensionContentNegotiationStrategy でオーバーライドされて true になっています。
public boolean isIgnoreUnknownExtensions()
public ListSE<MediaType> resolveMediaTypes(NativeWebRequest webRequest) throws HttpMediaTypeNotAcceptableException
ContentNegotiationStrategyContentNegotiationStrategy の resolveMediaTypes webRequest - 現在のリクエスト ContentNegotiationStrategy.MEDIA_TYPE_ALL_LISTHttpMediaTypeNotAcceptableException - リクエストされたメディア型を解析できない場合 public ListSE<MediaType> resolveMediaTypeKey(NativeWebRequest webRequest, @Nullable StringSE key) throws HttpMediaTypeNotAcceptableException
resolveMediaTypes(NativeWebRequest) の代替。HttpMediaTypeNotAcceptableException@Nullable protected abstract StringSE getMediaTypeKey(NativeWebRequest request)
null protected void handleMatch(StringSE key, MediaType mediaType)
MappingMediaTypeFileExtensionResolver.lookupMediaType(java.lang.String) を介して正常に解決されたときに処理を提供するためにオーバーライドします。@Nullable protected MediaType handleNoMatch(NativeWebRequest request, StringSE key) throws HttpMediaTypeNotAcceptableException
MappingMediaTypeFileExtensionResolver.lookupMediaType(java.lang.String)。サブクラスは、メディア型を決定するためにさらに手順を実行できます。このメソッドから MediaType が返された場合は、基本クラスのキャッシュに追加されます。