Fork me on GitHub






simuler GraphQL dans Xoops
Aspirant
Inscrit: 28/11/2021 22:07
Messages: 36
Bonjour,

Je met en place une solution qui nécessite une connexion vers une API en GraphQL pour récupérer un léger référentiel anodin.
Mon référentiel est Xoops (module que j'ai fait) et il faudrait que je fasse un petit script qui puisse recevoir les 3 requêtes et renvoyer de quoi contenter la solution pour qu'elle fasse le reste de son travail qui m'importe.
DSeulement pour faire du GraphQL, il faut soit être dans un contexte lourd (lavarel, symphony, ...) ou soit il faut installer des trucs lourds sur le serveur (composer , ...) et je ne peux pas trop car mon serveur PHP est sur une ressource web azure.

Bref, puis-je juste importer quelques fichiers autonomes pour exploiter les requêtes graphQL et faire un retour normé ?
Ou encore plus simple, simuler les mécaniques avec juste du traitement ?

Merci d'avance.

Posté le : 07/11/2022 21:34
Partager Twitter Partagez cette article sur GG+
Re: simuler GraphQL dans Xoops
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
En principe, je dirais oui, il y a plusieurs méthodes.

- faire une demande à l'API est faire bosser ton module (ou inverse)
- faire tourner un petit script (en cron ou pas) pour simuler la mécanique
- faire un petit script qui importe automatiquement les fichiers



Posté le : 09/11/2022 19:07
Partager Twitter Partagez cette article sur GG+
Re: simuler GraphQL dans Xoops
Aspirant
Inscrit: 28/11/2021 22:07
Messages: 36
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($rawInputtrue);
        
$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+1strpos($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.

Posté le : 10/11/2022 09:15
Partager Twitter Partagez cette article sur GG+
Re: simuler GraphQL dans Xoops
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
Souvent pas besoin de biens compliqué, du moment que ça couvre tes besoins

Posté le : 10/11/2022 10:38
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

91 Personne(s) en ligne (55 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 91 | Plus ...