Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Die REST-API

Für CMS-Entwickler, die Apps und andere Systeme anbinden, die REST-Schnittstelle, die Exponential 6 mitliefert. Die Seite behandelt die Erweiterung ezprestapi, die Routen v1 und v2, OAuth2-Tokens und persönliche…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/cms-developers/the-rest-api.md

On this page

This page is a translation. Read the English original

Die REST-API

Diese Seite richtet sich an Entwickler, die eine mobile App, ein Frontend einer anderen Technologie oder ein anderes System an eine Exponential-Website anbinden. Exponential 6 liefert eine REST-Schnittstelle zum Lesen von Inhalten und zum Anlegen und Entfernen mit; diese Seite sagt Ihnen, was sie heute abdeckt, wie Sie sich authentifizieren und wo ihre Grenzen liegen.

Inhalt

  1. Was die API bedient
  2. Adressen
  3. Die Routen
  4. Authentifizierung
  5. Berechtigungen und Antworten
  6. Beispiele
  7. Einstellungen
  8. Grenzen, die Sie kennen sollten
  9. Eigene Routen

Was die API bedient

Das REST-Rahmenwerk liegt im Kernel (kernel/private/rest/, settings/rest.ini). Die Inhaltsrouten kommen aus der Erweiterung ezprestapi (se7enxweb/ezprestapi, von der composer.json im Hauptverzeichnis verlangt), deren Provider ezp7xRestApiProvider die Präfixe ezp und ezpl bedient. Der Authentifizierungs-Provider des Kernels bedient auth, den OAuth2-Token-Endpunkt. Der ältere ezprestapiprovider ist veraltet (REST-API v1 und v2).

Adressen

/api/ezp/v1/content/node/2
 |    |   |  |
 |    |   |  path
 |    |   version (v1 or v2)
 |    prefix (provider)
 ApiPrefix (rest.ini [System])

v1 antwortet wie immer, für vorhandene Clients; Schreibzugriffe gibt es nur in v2.

Die Routen

Relativ zu /api/ezp/<version>:

MethodePfadv1v2Was sie tut
GET/content/node/<id>jajaein Knoten
GET/content/node/<id>/list(/offset/<n>)(/limit/<n>)(/sort/<key>(/asc|desc))jajadie Unterelemente
GET/content/node/<id>/childrenCountjajadie Zahl der Unterelemente
GET/content/node/<id>/fields, /field/<identifier>jajaalle Felder, ein Feld
GET/content/object/<id> und seine fields, field/<identifier>jajadasselbe über die Objekt-ID
POST/content/node/createneinjaunter parentNodeID anlegen und veröffentlichen
POST/content/node/<id>neinjaaktualisieren: antwortet mit 501, noch nicht implementiert
DELETE/content/node/delete/<id>neinjadas Objekt des Knotens mit seinen Platzierungen und seinem Teilbaum entfernen

Abfrageparameter: ResponseGroups=Metadata,Locations,Fields wählt, was eine Antwort enthält; OutputFormat=xhtml fügt in v2 die gerenderte Ausgabe der Ansicht des Knotens hinzu (Die Routen).

Authentifizierung

rest.ini [Authentication] RequireAuthentication=enabled ist der Standard: Jede Inhaltsroute braucht einen Benutzer.

ZugangsdatenFürWie
Persönlicher API-Schlüsselein eigenes Skript des Benutzersder Benutzer erstellt ihn unter Mein Konto > API-Zugang (braucht die Richtlinie apikey/create); gesendet als Authorization: Bearer expk_...
OAuth2-Tokeneine Anwendung, die andere Benutzer sich anmelden lässt und für sie handeltdie Anwendung wird unter Setup > oAuth-Verwaltung registriert; Authorization-Code-Flow; Token-Endpunkt POST /api/auth/v1/oauth/token

Eine Anfrage läuft immer als ein Benutzer und geht nie über dessen Richtlinien hinaus; ein Schlüssel ist zudem auf seine Scopes beschränkt. Schlüssel werden einmal angezeigt, können ablaufen und widerrufen werden (Persönliche API-Schlüssel, OAuth2-Tokens).

Berechtigungen und Antworten

Jeder Aufruf prüft content/read, content/create oder content/remove seines Benutzers, wie es die Website tut. Antworten: 200, 201 für ein Anlegen, 400 für ein fehlendes oder unbekanntes Feld, 401 ohne gültige Zugangsdaten, 403 access_denied, wenn der Benutzer es nicht darf, 404 für einen unbekannten Knoten. Richten Sie API-Zugriff ein, indem Sie einem eigenen Konto eine Rolle mit genau den Rechten geben, die der Client braucht (Sektionen, Rollen und Richtlinien).

Beispiele

Halten Sie den Schlüssel in einer Umgebungsvariablen, nie in einer Datei, die Sie committen:

read -s EXP_API_KEY && export EXP_API_KEY
curl -s -H "Authorization: Bearer $EXP_API_KEY" https://www.example.com/api/ezp/v1/content/node/2
curl -s -H "Authorization: Bearer $EXP_API_KEY" \
  "https://www.example.com/api/ezp/v1/content/node/2/list/offset/0/limit/20?ResponseGroups=Fields"
curl -s -H "Authorization: Bearer $EXP_API_KEY" https://www.example.com/api/ezp/v2/content/node/create \
  -d parentNodeID=<node id> -d classIdentifier=folder -d languageLocale=eng-US -d name='From a script'

Ein Anlegen antwortet mit {"message":"Created","objectId":...,"nodeId":...}. Mehr unter Beispiele mit curl und in der Lektion Die API mit einem persönlichen Schlüssel aufrufen.

Einstellungen

Einstellung (rest.ini)Bedeutung
[System] ApiPrefixder Pfad, unter dem die REST-Schnittstelle antwortet (/api)
[ApiProvider] ProviderClass[<prefix>]die Provider-Klasse jedes Präfixes
[Authentication] RequireAuthentication, AuthenticationStyle, RequireHTTPSwer aufrufen darf, wie, und nur über HTTPS
[ApiKeySettings] ApiKeyspersönliche Schlüssel an oder aus (standardmäßig an)
[OAuthSettings] TokenTTL, RefreshTokenTTLdie Lebensdauer eines OAuth2-Tokens und seines Refresh-Tokens
[OAuthSettings] AllowTokenInQuery, AllowTokenInBodywo außer im Header Authorization ein Token gelesen wird

Lesen Sie sie so, wie die Website sie sieht: ./console exp:ini list rest.ini/Authentication. Schalten Sie RequireHTTPS für jede Installation ein, die für andere erreichbar ist.

Grenzen, die Sie kennen sollten

  • Noch keine Route zum Aktualisieren. POST /api/ezp/v2/content/node/<id> antwortet mit 501. Ändern Sie über die GraphQL-Mutation updateContent (Die GraphQL-API), suchen Sie im Katalog von expservices nach einem Aktualisierungsdienst, oder führen Sie ein Skript auf dem Server aus (Inhalte aus PHP).
  • listAtom antwortet mit 500 in v1 und v2: Verwenden Sie die Route list oder den RSS-Export der Website (Bekanntes Problem: listAtom).
  • Das ist nicht die REST-API der Symfony-Plattformen. Clients, die für /api/ibexa/v2 geschrieben wurden, brauchen Änderungen (Umstieg von eZ Platform oder Ibexa).
  • GraphQL ist eine eigene API. Exponential 6.0.15 antwortet mit GraphQL unter /api/graphql, aus, bis es eingeschaltet wird (Die GraphQL-API).

Eigene Routen

Ein REST-Provider in Ihrer Erweiterung fügt Routen unter einem eigenen Präfix hinzu, mit Controllern, die die Kernel-API verwenden (Ein eigener REST-Provider). Für Funktionen der Administration und einfache JSON-Aufrufe gibt es außerdem expservices und die Serverfunktionen von ezjscore (Headless-Auslieferung).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x