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

REST und entfernte Dienste aus PHP

Die HTTP-APIs von Exponential von der PHP-Seite - der REST-Kernel hinter index_rest.php, rest.ini, Provider, die ezpRestProviderInterface mit Routen und ezpRestMvcController-Controllern implementieren, Authentifizierung…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/php-developers/rest-and-remote-services-from-php.md

On this page

This page is a translation. Read the English original

REST und entfernte Dienste aus PHP

Diese Seite richtet sich an PHP-Entwickler, die anderen Programmen Daten bereitstellen: mobilen Apps, anderen Frontends, Integrationen. Exponential hat dafür drei HTTP-Schichten. Diese Seite erklärt, wie sie in PHP gebaut sind und wie Sie der REST-Schicht etwas hinzufügen; die Sicht der Verbraucher ist REST-API v1 und v2 für Anwendungen.

Inhalt

  1. Drei Schichten
  2. Der REST-Kernel
  3. Einen Provider hinzufügen
  4. Controller
  5. Authentifizierung
  6. Autorisierung ist Ihre Aufgabe
  7. Eine Schicht wählen

Drei Schichten

SchichtEinstiegGebaut für
RESTindex_rest.php, unter /api/ (rest.ini [System] ApiPrefix=/api)Inhalte und Ressourcen für andere Programme, OAuth2 für Dritte
expservicesezjscore/call/exp<domain>::<function>Administrationsfunktionen aus Skripten und Apps, mit Auffindbarkeit und API-Tokens (Backend-Dienste über ezjscore)
ezjscore-Serverfunktionenezjscore/call/<name>::<function>das JavaScript Ihrer eigenen Seiten (ezjscore-JSON-Endpunkte in PHP)

Der REST-Kernel

index_rest.php führt den REST-Kernel in kernel/private/rest/ aus (ezpkernelrest.php, der Router, die MVC-Konfiguration, Renderer, OAuth). Er baut auf den MVC-Werkzeugen der expcomponents (se7enxweb/expcomponents-mvc-tools, seit 6.0.15 der Fork von zetacomponents/mvc-tools; expcomponents) auf, sodass ein Provider Routen und Controller in der Form dieses Frameworks liefert. Die Einstellungen stehen in settings/rest.ini:

BlockEnthält
[System]ApiPrefix, die Klasse des Präfixfilters
[ApiProvider]ProviderClass[<prefix>]=<class>, ein Eintrag pro Provider (auth ist ezpRestAuthProvider)
[RouteSettings]den Routenfilter (RouteSettingImpl) und Routen, die die Authentifizierung überspringen
[Authentication]ob Anfragen sich authentifizieren müssen (standardmäßig RequireAuthentication=enabled)
[OAuthSettings], [ApiKeySettings]Lebensdauer der Tokens und API-Schlüssel

Die Content-API (/api/ezp/v1/..., /api/ezp/v2/...) kommt aus der Erweiterung ezprestapi, deren Provider auf dieselbe Weise registriert ist.

Einen Provider hinzufügen

Ein Provider implementiert ezpRestProviderInterface (kernel/private/rest/classes/interfaces/rest_provider.php):

MethodeGibt zurück
getRoutes()die Routen des Providers, die URL-Muster und HTTP-Methoden Controller-Aktionen zuordnen
getViewController()den View-Controller, der einen Renderer für das Ergebnis wählt

Registrieren Sie ihn für ein Präfix in der rest.ini.append.php Ihrer Erweiterung:

<?php /* #?ini charset="utf-8"?
[ApiProvider]
ProviderClass[acme]=acmeRestProvider
*/ ?>

Setup > RAD hat ein Werkzeug, das das Grundgerüst schreibt (/setup/handlerextension/restprovider); Routenfilter sind ein eigener Erweiterungspunkt ([RouteSettings] RouteSettingImpl) (Erweiterungspunkte: REST-Provider). Lesen Sie die mitgelieferten Provider in kernel/private/rest/ und in ezprestapi, bevor Sie Ihren eigenen schreiben: Ihre Routentabellen sind die beste Referenz für das genaue Format.

Controller

Controller erweitern ezpRestMvcController (kernel/private/rest/classes/controllers/rest_controller.php), das ezcMvcController der MVC-Werkzeuge erweitert (der Klassenname ist im Fork unverändert). Jede Aktion liest ihre Routenvariablen und die Anfrage, erledigt die Arbeit über Ihre Dienstklassen und gibt ein Ergebnis zurück, das der View-Controller als JSON rendert. Halten Sie Aktionen schlank, wie bei Modul-Views: Derselbe Dienst sollte aus einem Befehl und einem Test aufrufbar sein.

Authentifizierung

BerechtigungsnachweisFür
OAuth2-Access-Token (POST /api/auth/v1/oauth/token, Grants authorization_code und refresh_token)eine Anwendung, die für ihre Benutzer handelt; Clients werden unter Setup > oAuth-Verwaltung registriert
persönlicher API-Schlüssel (Authorization: Bearer expk_...)das eigene Skript eines Benutzers (Persönliche API-Schlüssel)

Hinter Apache mit FastCGI stellen Sie sicher, dass der Header Authorization PHP erreicht (OAuth und API-Schlüssel).

Autorisierung ist Ihre Aufgabe

Das REST-Framework authentifiziert: Es sagt Ihnen, wer der Benutzer ist. Es entscheidet nicht, was der Benutzer tun darf. Jede Controller-Aktion muss Richtlinien für das prüfen, was sie liest oder schreibt. Die Content-API tut das über expRestContentPermission des Kernels (content/read, content/create, content/edit, content/remove) und antwortet ohne gültige Berechtigungsnachweise mit 401, mit 403, wenn der Benutzer es nicht darf, mit 404 bei einem unbekannten Knoten. Tun Sie in Ihren Aktionen dasselbe, mit eZUser::currentUser()->hasAccessTo() und canRead()/canEdit() bei Inhalten.

Eine Schicht wählen

BedarfSchicht
ein Dritter integriert sich mit Ihren Inhalten, mit OAuth-ZustimmungREST
eine mobile App liest und erstellt InhalteREST (Content-API)
ein Skript automatisiert Administrationsaufgabenexpservices mit einem API-Token
das JavaScript Ihrer Seite braucht eine kleine Antwortezjscore-Serverfunktion
eine andere Exponential-Installation synchronisiert Inhaltedie Erweiterung syndication, falls installiert

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