/

Référence de l'API REST

Chaque widget Xcrud communique avec un unique endpoint, core/ajax_crud.php - voici la forme de ses requêtes/réponses.

Le paramètre route

Chaque requête porte un paramètre de requête route identifiant la configuration de quelle page utiliser - il correspond à la valeur définie par l'appel ->route() propre à cette page. L'API résout à nouveau les hooks, colonnes et règles de validation de la page côté serveur à partir de cette route à chaque requête ; elle ne fait jamais confiance à une copie fournie par le client.

Opérations

OpérationMéthode HTTPRemarques
ListeGETRetourne {success, data, meta} - des lignes paginées plus meta.page/meta.limit/meta.total/meta.sums.
CréationPOSTCorps JSON de valeurs de champs. Exécute before_insert()/validation/insertion/after_insert() dans cet ordre.
Mise à jourPUTCorps JSON de valeurs de champs, adressé par la clé primaire de la ligne. Exécute before_update()/validation/mise à jour/after_update().
SuppressionDELETEAccepte un id unique ou une liste ?ids= en masse.
ExportGET?export=csv, ?export=xlsx, ou ?export=pdf - diffuse le jeu de résultats filtré/trié actuel sous forme de téléchargement de fichier, plafonné à XcrudConfig::$exportRowLimit lignes.
ImportPOST?import=csv avec un envoi de fichier multipart. Chaque ligne passe par le même pipeline before_insert()/validation/insertion/after_insert() qu'une création à une seule ligne, plafonné à XcrudConfig::$importRowLimit lignes.

Forme de la réponse de liste

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

meta.sums est renseigné au lieu de null lorsqu'une page appelle ->sum() ou utilise ->group_sum_columns() - voir Lignes groupées, sommes & rapports.

Chaque écriture est validée côté serveur

Un client appelant ajax_crud.php directement - en contournant entièrement le JS propre au widget - ne peut atteindre rien qu'un chargement de page normal ne pourrait déjà atteindre. Les requêtes de création/mise à jour sont validées selon exactement les mêmes règles que celles déclarées par la configuration PHP pour cette route : XcrudConfig::$blacklistedTables/$blacklistedColumns filtrent quelles tables/colonnes existent tout court, et les propres règles ->validation_required()/->validation_pattern() de chaque champ sont revérifiées sur le serveur, jamais prises telles quelles depuis le navigateur. Une colonne blacklistée n'est jamais acceptée à l'insertion/la mise à jour quel que soit le contenu du corps de la requête, et un nom de colonne non reconnu est silencieusement ignoré plutôt qu'écrit. Voir Sécurité : liste noire de tables & colonnes pour le modèle complet.