You are here

class JsonapiServiceProvider in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/jsonapi/src/JsonapiServiceProvider.php \Drupal\jsonapi\JsonapiServiceProvider

Adds 'api_json' as known format and prevents its use in the REST module.

@internal JSON:API maintains no PHP API since its API is the HTTP API. This class may change at any time and this will break any dependencies on it.

Hierarchy

Expanded class hierarchy of JsonapiServiceProvider

See also

https://www.drupal.org/project/drupal/issues/3032787

jsonapi.api.php

File

core/modules/jsonapi/src/JsonapiServiceProvider.php, line 20

Namespace

Drupal\jsonapi
View source
class JsonapiServiceProvider implements ServiceModifierInterface, ServiceProviderInterface {

  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container) {
    if ($container
      ->has('http_middleware.negotiation') && is_a($container
      ->getDefinition('http_middleware.negotiation')
      ->getClass(), NegotiationMiddleware::class, TRUE)) {

      // @see http://www.iana.org/assignments/media-types/application/vnd.api+json
      $container
        ->getDefinition('http_middleware.negotiation')
        ->addMethodCall('registerFormat', [
        'api_json',
        [
          'application/vnd.api+json',
        ],
      ]);
    }
  }

  /**
   * {@inheritdoc}
   */
  public function register(ContainerBuilder $container) {
    $container
      ->addCompilerPass(new RegisterSerializationClassesCompilerPass());
  }

}

Members

Namesort descending Modifiers Type Description Overrides
JsonapiServiceProvider::alter public function Modifies existing service definitions. Overrides ServiceModifierInterface::alter
JsonapiServiceProvider::register public function Registers services to the container. Overrides ServiceProviderInterface::register