Titre du sujet : Re: simuler GraphQL dans Xoops par davidm78 sur 10/11/2022 09:15:47
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.
|