Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ResourceResponseSubscriber.php

function ResourceResponseSubscriber::flattenResponse

Same name in this branch
  1. 11.1.x core/modules/jsonapi/src/EventSubscriber/ResourceResponseSubscriber.php \Drupal\jsonapi\EventSubscriber\ResourceResponseSubscriber::flattenResponse()

Flattens a fully rendered resource response.

Ensures that complex data structures in ResourceResponse::getResponseData() are not serialized. Not doing this means that caching this response object requires unserializing the PHP data when reading this response object from cache, which can be very costly, and is unnecessary.

Parameters

\Drupal\rest\ResourceResponseInterface $response: A fully rendered resource response.

Return value

\Drupal\Core\Cache\CacheableResponse|\Symfony\Component\HttpFoundation\Response The flattened response.

1 call to ResourceResponseSubscriber::flattenResponse()
ResourceResponseSubscriber::onResponse in core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php
Serializes ResourceResponse responses' data, and removes that data.

File

core/modules/rest/src/EventSubscriber/ResourceResponseSubscriber.php, line 184

Class

ResourceResponseSubscriber
Response subscriber that serializes and removes ResourceResponses' data.

Namespace

Drupal\rest\EventSubscriber

Code

protected function flattenResponse(ResourceResponseInterface $response) {
    $final_response = $response instanceof CacheableResponseInterface ? new CacheableResponse() : new Response();
    $final_response->setContent($response->getContent());
    $final_response->setStatusCode($response->getStatusCode());
    $final_response->setProtocolVersion($response->getProtocolVersion());
    if ($response->getCharset()) {
        $final_response->setCharset($response->getCharset());
    }
    $final_response->headers = clone $response->headers;
    if ($final_response instanceof CacheableResponseInterface) {
        $final_response->addCacheableDependency($response->getCacheableMetadata());
    }
    return $final_response;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal