public function enhance(array
$defaults, Request
$request) { if (!Routes::
isJsonApiRequest($defaults) || !
($resource_type = Routes::
getResourceTypeNameFromParameters($defaults))) { return $defaults;
} $has_version_param =
$request->query->
has(static::RESOURCE_VERSION_QUERY_PARAMETER
);
// If the resource type is not versionable, then nothing needs to be
// enhanced.
if (!
$resource_type->
isVersionable()) { // If the query parameter was provided but the resource type is not
// versionable, provide a helpful error.
if ($has_version_param) { $cacheability =
(new CacheableMetadata())->
addCacheContexts(['url.path',
static::CACHE_CONTEXT
]);
throw new CacheableHttpException($cacheability, 501, 'Resource versioning is not yet supported for this resource type.'
);
} return $defaults;
} // Since the resource type is versionable, responses must always vary by the
// requested version, without regard for whether a version query parameter