diff --git a/core/modules/hal/src/LinkManager/LinkManagerBase.php b/core/modules/hal/src/LinkManager/LinkManagerBase.php
index b6af1622d7..410265fa3d 100644
--- a/core/modules/hal/src/LinkManager/LinkManagerBase.php
+++ b/core/modules/hal/src/LinkManager/LinkManagerBase.php
@@ -2,7 +2,7 @@
 
 namespace Drupal\hal\LinkManager;
 
-use Drupal\rest\EventSubscriber\ResourceResponseSubscriber;
+use Drupal\serialization\Normalizer\CacheableNormalizerInterface;
 
 /**
  * Defines an abstract base-class for HAL link manager objects.
@@ -49,21 +49,21 @@ public function setLinkDomain($domain) {
    *
    * @see \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
    * @see \Symfony\Component\Serializer\SerializerInterface::serialize()
-   * @see \Drupal\rest\EventSubscriber\ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY
+   * @see \Drupal\serialization\Normalizer\CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY
    */
   protected function getLinkDomain(array $context = []) {
     if (empty($this->linkDomain)) {
       if ($domain = $this->configFactory->get('hal.settings')->get('link_domain')) {
         // Bubble the appropriate cacheability metadata whenever possible.
-        if (isset($context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY])) {
-          $context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheableDependency($this->configFactory->get('hal.settings'));
+        if (isset($context[CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY])) {
+          $context[CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheableDependency($this->configFactory->get('hal.settings'));
         }
         return rtrim($domain, '/');
       }
       else {
         // Bubble the relevant cacheability metadata whenever possible.
-        if (isset($context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY])) {
-          $context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheContexts(['url.site']);
+        if (isset($context[CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY])) {
+          $context[CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheContexts(['url.site']);
         }
         $request = $this->requestStack->getCurrentRequest();
         return $request->getSchemeAndHttpHost() . $request->getBasePath();
diff --git a/core/modules/hal/tests/src/Kernel/HalLinkManagerTest.php b/core/modules/hal/tests/src/Kernel/HalLinkManagerTest.php
index 1387149c4e..95124bb9b6 100644
--- a/core/modules/hal/tests/src/Kernel/HalLinkManagerTest.php
+++ b/core/modules/hal/tests/src/Kernel/HalLinkManagerTest.php
@@ -8,7 +8,7 @@
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\node\Entity\NodeType;
-use Drupal\rest\EventSubscriber\ResourceResponseSubscriber;
+use Drupal\serialization\Normalizer\CacheableNormalizerInterface;
 
 /**
  * @coversDefaultClass \Drupal\hal\LinkManager\LinkManager
@@ -70,10 +70,10 @@ public function testGetTypeUri($link_domain, $entity_type, $bundle, array $conte
 
   public function providerTestGetTypeUri() {
     $serialization_context_collecting_cacheability = [
-      ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => new CacheableMetadata()
+      CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => new CacheableMetadata()
     ];
     $expected_serialization_context_cacheability_url_site = [
-      ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheContexts(['url.site'])
+      CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheContexts(['url.site'])
     ];
 
     $base_test_case = [
@@ -133,7 +133,7 @@ public function providerTestGetTypeUri() {
         'context' => $serialization_context_collecting_cacheability,
         'expected return' => 'http://llamas-rock.com/for-real/rest/type/node/page',
         'expected context' => [
-          ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheTags(['config:hal.settings']),
+          CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheTags(['config:hal.settings']),
         ],
       ],
     ];
@@ -163,10 +163,10 @@ public function testGetRelationUri($link_domain, $entity_type, $bundle, $field_n
 
   public function providerTestGetRelationUri() {
     $serialization_context_collecting_cacheability = [
-      ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => new CacheableMetadata()
+      CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => new CacheableMetadata()
     ];
     $expected_serialization_context_cacheability_url_site = [
-      ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheContexts(['url.site'])
+      CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheContexts(['url.site'])
     ];
 
     $field_name = $this->randomMachineName();
@@ -230,7 +230,7 @@ public function providerTestGetRelationUri() {
         'context' => $serialization_context_collecting_cacheability,
         'expected return' => 'http://llamas-rock.com/for-real/rest/relation/node/page/' . $field_name,
         'expected context' => [
-          ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheTags(['config:hal.settings']),
+          CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => (new CacheableMetadata())->setCacheTags(['config:hal.settings']),
         ],
       ],
     ];
@@ -258,7 +258,7 @@ public function testGetRelationInternalIds() {
    */
   public function testHalLinkManagersSetLinkDomain() {
     $serialization_context = [
-      ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY => new CacheableMetadata()
+      CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY => new CacheableMetadata()
     ];
 
     /* @var \Drupal\rest\LinkManager\LinkManager $link_manager */
@@ -266,10 +266,10 @@ public function testHalLinkManagersSetLinkDomain() {
     $link_manager->setLinkDomain('http://example.com/');
     $link = $link_manager->getTypeUri('node', 'page', $serialization_context);
     $this->assertEqual($link, 'http://example.com/rest/type/node/page');
-    $this->assertEqual(new CacheableMetadata(), $serialization_context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY]);
+    $this->assertEqual(new CacheableMetadata(), $serialization_context[CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY]);
     $link = $link_manager->getRelationUri('node', 'page', 'field_ref', $serialization_context);
     $this->assertEqual($link, 'http://example.com/rest/relation/node/page/field_ref');
-    $this->assertEqual(new CacheableMetadata(), $serialization_context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY]);
+    $this->assertEqual(new CacheableMetadata(), $serialization_context[CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY]);
   }
 
 }
diff --git a/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php b/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
index babb238b45..9dda8d74e9 100644
--- a/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
+++ b/core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
@@ -21,15 +21,6 @@
  */
 class ResourceResponseSubscriber implements EventSubscriberInterface {
 
-  /**
-   * Name of key for bubbling cacheability metadata via serialization context.
-   *
-   * @see \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
-   * @see \Symfony\Component\Serializer\SerializerInterface::serialize()
-   * @see \Drupal\rest\EventSubscriber\ResourceResponseSubscriber::renderResponseBody()
-   */
-  const SERIALIZATION_CONTEXT_CACHEABILITY = 'cacheability';
-
   /**
    * The serializer.
    *
diff --git a/core/modules/serialization/src/Normalizer/CacheableNormalizerInterface.php b/core/modules/serialization/src/Normalizer/CacheableNormalizerInterface.php
new file mode 100644
index 0000000000..0a4886898d
--- /dev/null
+++ b/core/modules/serialization/src/Normalizer/CacheableNormalizerInterface.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Drupal\serialization\Normalizer;
+
+use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
+
+/**
+ * Defines the interface for cacheable normalizers.
+ */
+interface CacheableNormalizerInterface extends NormalizerInterface {
+
+  /**
+   * Name of key for bubbling cacheability metadata via serialization context.
+   *
+   * @see \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
+   * @see \Symfony\Component\Serializer\SerializerInterface::serialize()
+   * @see \Drupal\rest\EventSubscriber\ResourceResponseSubscriber::renderResponseBody()
+   */
+  const SERIALIZATION_CONTEXT_CACHEABILITY = 'cacheability';
+
+}
diff --git a/core/modules/serialization/src/Normalizer/NormalizerBase.php b/core/modules/serialization/src/Normalizer/NormalizerBase.php
index 958aaf2f4c..31e2402851 100644
--- a/core/modules/serialization/src/Normalizer/NormalizerBase.php
+++ b/core/modules/serialization/src/Normalizer/NormalizerBase.php
@@ -3,14 +3,12 @@
 namespace Drupal\serialization\Normalizer;
 
 use Drupal\Core\Cache\CacheableDependencyInterface;
-use Drupal\rest\EventSubscriber\ResourceResponseSubscriber;
-use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
 use Symfony\Component\Serializer\Normalizer\SerializerAwareNormalizer;
 
 /**
  * Base class for Normalizers.
  */
-abstract class NormalizerBase extends SerializerAwareNormalizer implements NormalizerInterface {
+abstract class NormalizerBase extends SerializerAwareNormalizer implements CacheableNormalizerInterface {
 
   /**
    * The interface or class that this Normalizer supports.
@@ -92,8 +90,8 @@ protected function checkFormat($format = NULL) {
    *   The data that might have cacheability information.
    */
   protected function addCacheableDependency(array $context, $data) {
-    if ($data instanceof CacheableDependencyInterface && isset($context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY])) {
-      $context[ResourceResponseSubscriber::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheableDependency($data);
+    if ($data instanceof CacheableDependencyInterface && isset($context[CacheableDependencyInterface::SERIALIZATION_CONTEXT_CACHEABILITY])) {
+      $context[CacheableDependencyInterface::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheableDependency($data);
     }
   }
 
