/

Guida di riferimento alla REST API

Ogni widget Xcrud dialoga con un unico endpoint, core/ajax_crud.php - ecco la forma delle sue richieste/risposte.

Il parametro route

Ogni richiesta porta con sé un parametro query route che identifica quale configurazione di pagina usare - corrisponde al valore impostato dalla chiamata ->route() di quella pagina. L'API ririsolve server-side gli hook, le colonne e le regole di validazione della pagina a partire da quella rotta a ogni singola richiesta; non si fida mai di una copia fornita dal client.

Operazioni

OperazioneMetodo HTTPNote
ListaGETRestituisce {success, data, meta} - righe paginate più meta.page/meta.limit/meta.total/meta.sums.
CreazionePOSTCorpo JSON con i valori dei campi. Esegue in ordine before_insert()/validazione/insert/after_insert().
AggiornamentoPUTCorpo JSON con i valori dei campi, indirizzato tramite la chiave primaria della riga. Esegue before_update()/validazione/update/after_update().
EliminazioneDELETEAccetta un singolo id o un elenco bulk ?ids=.
EsportazioneGET?export=csv, ?export=xlsx, o ?export=pdf - trasmette in streaming l'insieme di risultati filtrato/ordinato corrente come file scaricabile, limitato a XcrudConfig::$exportRowLimit righe.
ImportazionePOST?import=csv con un upload di file multipart. Ogni riga passa attraverso la stessa pipeline before_insert()/validazione/insert/after_insert() di una creazione a riga singola, limitata a XcrudConfig::$importRowLimit righe.

Forma della risposta di lista

{
  "success": true,
  "data": [
    { "customerNumber": 103, "customerName": "Atelier graphique", "..." : "..." }
  ],
  "meta": {
    "page": 1,
    "limit": 10,
    "total": 122,
    "sums": null
  }
}

meta.sums viene valorizzato invece di null quando una pagina chiama ->sum() o usa ->group_sum_columns() - vedi Righe raggruppate, somme e report.

Ogni scrittura è validata server-side

Un client che chiama ajax_crud.php direttamente - bypassando del tutto il JS del widget - non può raggiungere nulla che il normale caricamento di una pagina non potrebbe già raggiungere. Le richieste di creazione/aggiornamento sono validate rispetto esattamente alle stesse regole dichiarate nella configurazione PHP per quella rotta: XcrudConfig::$blacklistedTables/$blacklistedColumns regolano quali tabelle/colonne esistono affatto, e le regole ->validation_required()/->validation_pattern() di ogni campo vengono riverificate sul server, senza mai fidarsi del browser. Una colonna in blacklist non viene mai accettata in inserimento/aggiornamento indipendentemente da cosa contenga il corpo della richiesta, e un nome di colonna non riconosciuto viene silenziosamente ignorato invece di essere scritto. Vedi Sicurezza: blacklist di tabelle e colonne per il modello completo.