REST-API-Referenz
Jedes Xcrud-Widget spricht mit einem einzigen Endpunkt, core/ajax_crud.php - hier ist dessen Request-/Response-Format.
Der Parameter route
Jede Anfrage führt einen Query-Parameter route mit, der festlegt, welche Seitenkonfiguration verwendet wird - er entspricht genau dem Wert, den der eigene ->route()-Aufruf dieser Seite gesetzt hat. Die API löst Hooks, Spalten und Validierungsregeln der Seite bei jeder einzelnen Anfrage serverseitig aus dieser Route neu auf; sie vertraut nie einer clientseitig bereitgestellten Kopie davon.
Operationen
| Operation | HTTP-Methode | Hinweise |
|---|---|---|
| Liste | GET | Liefert {success, data, meta} - paginierte Zeilen plus meta.page/meta.limit/meta.total/meta.sums. |
| Erstellen | POST | JSON-Body mit Feldwerten. Führt before_insert()/Validierung/Insert/after_insert() in dieser Reihenfolge aus. |
| Aktualisieren | PUT | JSON-Body mit Feldwerten, adressiert über den Primärschlüssel der Zeile. Führt before_update()/Validierung/Update/after_update() aus. |
| Löschen | DELETE | Akzeptiert eine einzelne ID oder eine Mehrfach-?ids=-Liste. |
| Export | GET | ?export=csv, ?export=xlsx oder ?export=pdf - streamt die aktuell gefilterte/sortierte Ergebnismenge als Datei-Download, begrenzt auf XcrudConfig::$exportRowLimit Zeilen. |
| Import | POST | ?import=csv mit einem Multipart-Datei-Upload. Jede Zeile durchläuft dieselbe before_insert()/Validierung/Insert/after_insert()-Pipeline wie ein Einzelzeilen-Create, begrenzt auf XcrudConfig::$importRowLimit Zeilen. |
Format der Listen-Antwort
{
"success": true,
"data": [
{ "customerNumber": 103, "customerName": "Atelier graphique", "..." : "..." }
],
"meta": {
"page": 1,
"limit": 10,
"total": 122,
"sums": null
}
}
meta.sums wird statt null befüllt, wenn eine Seite ->sum() aufruft oder ->group_sum_columns() verwendet - siehe Gruppierte Zeilen, Summen & Berichte.
Jeder Schreibzugriff wird serverseitig validiert
Ein Client, der ajax_crud.php direkt aufruft - und damit das eigene JS des Widgets komplett umgeht - kann nicht mehr erreichen als ein normaler Seitenaufruf. Erstellen-/Aktualisieren-Anfragen werden gegen genau dieselben Regeln validiert, die die PHP-Konfiguration für diese Route deklariert: XcrudConfig::$blacklistedTables/$blacklistedColumns regeln, welche Tabellen/Spalten überhaupt existieren, und die eigenen ->validation_required()-/->validation_pattern()-Regeln jedes Feldes werden serverseitig erneut geprüft, niemals aus dem Browser übernommen. Eine gesperrte Spalte wird nie bei Insert/Update akzeptiert, egal was im Request-Body steht, und ein nicht erkannter Spaltenname wird stillschweigend ignoriert statt geschrieben. Das vollständige Modell finden Sie unter Sicherheit: Tabellen & Spalten sperren.