attus / jsonapi_response
JSON:API Response based on Custom Data
Installs: 766
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:drupal-module
Requires
- drupal/core: ^11.1 || ^12.0
README
A Drupal 10 module for custom JSON:API Entity responses.
Usage
use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Cache\CacheableResponseInterface; use Drupal\jsonapi_response\JsonapiEntityResponseInterface; class MyController extends ControllerBase { private $_jsonapiResponseEntity; public function __construct(JsonapiEntityResponseInterface $jsonapiResponseEntity) { $this->_jsonapiResponseEntity = $jsonapiResponseEntity; } public static function create(ContainerInterface $container) { return new static( $container->get('jsonapi_response.entity'), ); } /** * A single entity in JSON:API Format */ public function getMyEntity(): CacheableResponseInterface { $entity = $this->getEntityForResponse(); $response = $this->_jsonapiResponseEntity->entityIndividualResponse($entity); $cache = new CacheableMetadata(); $cache->setCacheMaxAge(0); $response->addCacheableDependency($cache); return $response; } /** * An entity collection in JSON:API Format */ public function getMyEntityCollection(): CacheableResponseInterface { $entities = $this->getEntitiesForResponse(); return $this->_jsonapiResponseEntity->entityCollectionResponse($entities); } /** * An entity collection in JSON:API Format with includes */ public function getMyEntityCollectionWithIncludes(): CacheableResponseInterface { $entities = $this->getEntitiesForResponse(); return $this->_jsonapiResponseEntity->entityCollectionResponse($entities, [$fieldName1, $fieldName2]); } }
You are free to use this module without any restriction but without any warranty.