Tout CMS doit fournir des APIs afin que d’autres applications/services peuvent accéder au contenu ou mettre à jour ce dernier ou accéder au code source de CMS. eZ Platform offre une API qui permet de connecter son code à eZ Platform
eZ Platform offres deux APIs :
- REST API : permet d’interagir avec une installation eZ Platform en utilisant le protocole HTTP, en suivant un modèle d’interaction REST
- Public (PHP) API : expose un référentiel qui vous permet de créer, lire, mettre à jour, gérer et supprimer tous les objets disponibles dans eZ Platform (objets de contenu, sections, locations, content types, …)
Il existe aussi un client API JavaScript, utile pour travailler avec eZ Platform en tant que CMS headless
REST API
- La version 2 permet d’interagir avec une installation eZ Platform en utilisant le protocole HTTP
- l’API supporte JSON et XML en terme de format de requête (request)
- Accept: application/vnd.ez.api.Content+xml pour récupérer le contenu (full data, fields included) en XML
- Accept: application/vnd.ez.api.ContentInfo+json pour récupérer contentInfo (metadata seulement) en JSON
- L’API est disponible à l’URL /api/ezp/v2
- L’API fournit un ensemble d’URL, par exemple l’URI
- /content/objects/53 nous permet d’interagir avec le contenu dont ID est 53
- /content/types/1 nous permet d’interagir avec le content type dont l’ID est 1
- Exemple réel : http://ezplatform.abetari.be/api/ezp/v2/content/objects/53
- L’API utilise « vers HTTP » (GET, POST, PUT, DELETE, etc…), ainsi que les en-têtes HTTP pour spécifier le type de demande
- GET /content/objects/2 va nous fournir des données sur le contenu numéro 2
- PATCH /content/objects/2 va modifier le contenu de l’objet numéro 2
- DELETE /content/objects/2 va supprimer l’objet numéro 2
- COPY /content/objects/2 va créer une copie de l’objet numéro 2
- Deux méthodes d’authentification sont actuellement supportées : session et basic
- Basic est souvent utilisée lorsqu’une application distante exécute des opérations sur une ou plusieurs instances de eZ Platform (publication à distance, maintenance, etc.)
- Session est destinée à être utilisée pour les opérations AJAX , il faut qu’un cookie de session soit envoyé avec chaque demande.Il est possible de créer une session pour le visiteur s’il n’est pas encore connecté
- Par défaut, c’est la méthode session qui est utilisé, car cela est nécessaire pour l’interface utilisateur
Pour plus de détail
- https://ez-systems-developer-documentation.readthedocs-hosted.com/en/1.10/api/rest_api_guide/
- https://github.com/ezsystems/ezpublish-kernel/blob/master/doc/specifications/rest/REST-API-V2.rst
Public (PHP) API
- eZ Platform API Repository
- C’est le point d’entrée de tout ce que vous voulez faire avec l’API public
- Il permet de créer, récupérer, mettre à jour et supprimer tous les objets d’eZ Platform, ainsi que les types de contenu, les sections, les états de contenu. Il est toujours obtenu à travers le conteneur de service.
- Obtenir eZ Platform Repository :
/** @var $repository \eZ\Publish\API\Repository\Repository $repository = $container->get( 'ezpublish.api.repository' );
- Obtenir eZ Platform Repository :
- Techniquement, il permet de faire trois opérations :
- l’authentification des utilisateurs (obtention / modification de l’utilisateur courant actuel )
- Chaque action sera exécutée en tant qu’utilisateur. Dans le contexte d’une exécution normale d’eZ Platform, l’utilisateur connecté sera évidemment le courant, identifié via les méthodes d’authentification disponibles
- l’émission de transactions
- l’obtention de services
- l’API public décompose l’accès au contenu, à l’utilisateur, aux types de contenu et à d’autres fonctionnalités dans différents services. Ces services sont obtenus via le Repository en utilisant les méthodes get[ServiceName()]
$contentService
=$repository
->getContentService();
$contentTypeService
=$repository
->getContentTypeService();
$fieldTypeService
=$repository
->getFieldTypeService();
$locationService
=$repository
->getLocationService();
$searchService
=$repository
->getSearchService();
$urlAliasService
=
$repository
->getURLAliasService();
$sectionService
=
$repository
->getSectionService();
$userService
=
$repository
->getUserService();
- l’API public décompose l’accès au contenu, à l’utilisateur, aux types de contenu et à d’autres fonctionnalités dans différents services. Ces services sont obtenus via le Repository en utilisant les méthodes get[ServiceName()]
- l’authentification des utilisateurs (obtention / modification de l’utilisateur courant actuel )
- l’API public est basée sur une architecture en couches, y compris une API de persistance qui résume le stockage. En utilisant l’API public, on est sûr que le code sera compatible avec les versions futures
Pour plus de détail :