Bonjour,
Merci pour ton retour.
Pour résumer, je souhaite que mon module Xoops soit le serveur API.
Bon, du coup, je suis en train de redévelopper le framework light de GraphQL.
J'en suis là:
$fct = ""; // Nom de la fonction
$prms = array(); // Paramètres de la fonction (passés entre parenthèses)
try {
$rawInput = file_get_contents('php://input'); //, true, $context
if (strpos(strtolower($rawInput), "query")) {
$input = json_decode($rawInput, true);
$query = $input['query']; // ['data']
$vars = isset($input['variables']) ? $input['variables'] : null;
//foreach ($vars as $name => $value) {echo "POST: $name: $valuen";}
//echo "query: "; print_r($query); echo "rn";
$pos1 = strpos($query,"{");
$pos2 = strpos($query,"(");
if (!$pos2)
$pos2 = strpos($query,"{", $pos1+1);
$fct = trim(substr($query, $pos1+1, $pos2-$pos1-1));
echo "fct: "; print_r($fct); echo "rn";
$prmStr = trim(substr($query, $pos2+1, strpos($query,")")-$pos2-1));
$parametres = str_replace(""", "", $prmStr);
//echo "parametres: "; print_r($parametres); echo "rn";
$tab = explode(",", trim($parametres));
//print_r($tab); echo "rn";
foreach($tab as $str) {
$prm = explode(":", trim($str));
$prms["'".trim($prm[0])."'"]= (count($prm)>1)? trim($prm[1]):"";
} // */
//echo "prms: "; print_r($prms); echo "rn";
}
} catch (Exception $e) {
$response = [ 'error' => [ 'message' => $e->getMessage() ] ];
}
Pour le moment, ça suffit à répondre à mon besoin. Mais on est loin d'être "conventionnel" et générique.