$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
// was provided or not.
if (isset($defaults['entity'
])) { assert($defaults['entity'
] instanceof EntityInterface
);
$defaults['entity'
]->
addCacheContexts([static::CACHE_CONTEXT
]);
}