public function Controller::serialize in Schemata 8
Serializes a entity type or bundle definition.
We have 2 different data formats involved. One is the schema format (for instance JSON Schema) and the other one is the format that the schema is describing (for instance jsonapi, json, hal+json, …). We need to provide both formats. Something like: ?_format=schema_json&_describes=api_json.
Parameters
string $entity_type_id: The entity type ID to describe.
string $bundle: The (optional) bundle to describe.
\Symfony\Component\HttpFoundation\Request $request: The request object.
Return value
\Drupal\Core\Cache\CacheableResponse The response object.
File
- src/Controller/ Controller.php, line 85 
Class
- Controller
- Contains callback methods for dynamic routes.
Namespace
Drupal\schemata\ControllerCode
public function serialize($entity_type_id, Request $request, $bundle = NULL) {
  $parts = $this
    ->extractFormatNames($request);
  // Load the data to serialize from the route information on the current
  // request.
  $schema = $this->schemaFactory
    ->create($entity_type_id, $bundle);
  // Serialize the entity type/bundle definition.
  $format = implode(':', $parts);
  $content = $this->serializer
    ->serialize($schema, $format);
  // Finally, set the contents of the response and return it.
  $this->response
    ->addCacheableDependency($schema);
  $cacheable_dependency = (new CacheableMetadata())
    ->addCacheContexts([
    'url.query_args:_describes',
  ]);
  $this->response
    ->addCacheableDependency($cacheable_dependency);
  $this->response
    ->setContent($content);
  $this->response->headers
    ->set('Content-Type', $request
    ->getMimeType($parts[0]));
  return $this->response;
}