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, resolveFileExtensions
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected 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
ContentNegotiationStrategy
ContentNegotiationStrategy
の resolveMediaTypes
webRequest
- 現在のリクエスト ContentNegotiationStrategy.MEDIA_TYPE_ALL_LIST
HttpMediaTypeNotAcceptableException
- リクエストされたメディア型を解析できない場合 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 が返された場合は、基本クラスのキャッシュに追加されます。