diff --git a/core/modules/rest/src/Plugin/rest/resource/EntityResource.php b/core/modules/rest/src/Plugin/rest/resource/EntityResource.php index 9b1d15f005c0c27fa826e1904315268cddbe30ca..a9e0ff0e867189f982f82fbcb1e0459054bb3b23 100644 --- a/core/modules/rest/src/Plugin/rest/resource/EntityResource.php +++ b/core/modules/rest/src/Plugin/rest/resource/EntityResource.php @@ -432,7 +432,10 @@ public function calculateDependencies() { */ protected function addLinkHeaders(EntityInterface $entity, Response $response) { foreach ($entity->getEntityType()->getLinkTemplates() as $relation_name => $link_template) { - if ($definition = $this->linkRelationTypeManager->getDefinition($relation_name, FALSE)) { + if ($this->linkRelationTypeManager->hasDefinition($relation_name)) { + /** @var \Drupal\Core\Http\LinkRelationTypeInterface $link_relation_type */ + $link_relation_type = $this->linkRelationTypeManager->createInstance($relation_name); + $generator_url = $entity->toUrl($relation_name) ->setAbsolute(TRUE) ->toString(TRUE); @@ -440,10 +443,10 @@ protected function addLinkHeaders(EntityInterface $entity, Response $response) { $response->addCacheableDependency($generator_url); } $uri = $generator_url->getGeneratedUrl(); - $relationship = $relation_name; - if (!empty($definition['uri'])) { - $relationship = $definition['uri']; - } + + $relationship = $link_relation_type->isRegistered() + ? $link_relation_type->getRegisteredName() + : $link_relation_type->getExtensionUri(); $link_header = '<' . $uri . '>; rel="' . $relationship . '"'; $response->headers->set('Link', $link_header, FALSE); diff --git a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php index 81baf9ee179d3630bc6a526e9e8a87990c0819aa..6cd5b6b6eedd60355ed083d8a0c596e0b779472c 100644 --- a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php +++ b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php @@ -424,11 +424,11 @@ public function testGet() { if ($this->entity->getEntityType()->getLinkTemplates()) { $this->assertArrayHasKey('Link', $response->getHeaders()); $link_relation_type_manager = $this->container->get('plugin.manager.link_relation_type'); - $expected_link_relation_headers = array_map(function ($rel) use ($link_relation_type_manager) { - $definition = $link_relation_type_manager->getDefinition($rel, FALSE); - return (!empty($definition['uri'])) - ? $definition['uri'] - : $rel; + $expected_link_relation_headers = array_map(function ($relation_name) use ($link_relation_type_manager) { + $link_relation_type = $link_relation_type_manager->createInstance($relation_name); + return $link_relation_type->isRegistered() + ? $link_relation_type->getRegisteredName() + : $link_relation_type->getExtensionUri(); }, array_keys($this->entity->getEntityType()->getLinkTemplates())); $parse_rel_from_link_header = function ($value) use ($link_relation_type_manager) { $matches = [];