IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Lire API REST


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 42
    Points
    42
    Par défaut Lire API REST
    Bonjour

    Je veux lister des produits existant dans un API REST de PrestaShop au format JSON, alors que le retour est v..Occurrence =0

    Voilà mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    UrlAPI    is string ="https://xxxx.com/api/products?output_format=JSON"
     
    RstRequete.URL                  = UrlAPI
    RstRequete..Méthode        = httpGet
    RstRequete.MotDePasse    = "pass"
    RstRequete.Utilisateur      = "cle"
    RstReponse=RESTEnvoie(RstRequete)
    v est un Variant=JSONVersVariant(RstReponse..Contenu)
    POUR i = 1 _À_ v..Occurrence   //Info( V..Occurrence) me renvoie=0
       trace(v.id,v.name)
    FIN
    Merci d'avance de me donner une piste

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 777
    Points : 5 191
    Points
    5 191
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Dans un premier temps, pourquoi passer par un variant plutôt que par la structure des données renvoyées ?
    Dans un deuxième temps, tu as une listes donc à priori le résultat est un tableau (de structures ou de Variant).
    L'utilisation d'une structure ou mieux d'une classe mappée est plus intéressant si l'on doit afficher le résultat dans un champ table. Il suffit de construire le champ sur une variable, en l'occurrence le tableau de structure/classe. L'utilisation d'un classe mappée permet de remplir directement la base via MémoireVersFichier.
    A la louche on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    tabMaListeProduit est tableau de STProduit
    stMonProduit est STProduit
    UrlAPI    is string ="https://xxxx.com/api/products?output_format=JSON"
     
    RstRequete.URL                  = UrlAPI
    RstRequete..Méthode        = httpGet
    RstRequete.MotDePasse    = "pass"
    RstRequete.Utilisateur      = "cle"
    RstReponse=RESTEnvoie(RstRequete)
     
    Désérialise(tabMaListeProduit,RstRéponse..Contenu,psdJSON)
     
    POUR TOUT stMonProduit de STProduit
    //Traitement
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 161
    Points : 9 111
    Points
    9 111
    Par défaut
    Bonjour,

    Je plussoie la réponse de Voroltinquo.

    J'ajoute le truc de base. Si tu ne l'as pas vérifié, fais le : est-ce que tu as mis un point d'arrêt au niveau de ta ligne 10. Lorsque le débugger s'arrête là, clic droit sur ta variable v (ligne 9) et "évaluer l'expression", histoire de vérifier que tu as bien qq chose qui arrive.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 42
    Points
    42
    Par défaut
    Merci frenchsting pour ton retour
    J'ai pas le problème de de nombre de 10 lignes

    Merci Voroltinquo pour ton retour

    Pour info: J'utilise le même code pour le cas d'un site crée dans WordPress ca marche bien (en utilisant un variant), mais pour un site réalisé par Prestashop j'ai ce message d'erreur
    Alors je cherche la différence entre PrestaShop et WordPress, le premier renvoie, par défaut, les données en XML et le WordPress en json
    C'est pour cela j'ajoute dans mon URL (Prestashop) "output_format=JSON" pour avoir les données en JSON.

    Alors j'ai suivi ta méthode mais j'ai le message : L'élément JSON n'est pas un tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    //Je déclare ma structure
    STProduit is Structure
       Id		is int sur 8
        name	is string
    FIN
    tabMaListeProduit	est tableau de STProduit
    //stMonProduit		est STProduit
    UrlAPI				is string	= "https://xxxxx.com/api/products?output_format=JSON"
    RstRequete.URL					= UrlAPI
    RstRequete..Méthode				= httpGet
    RstRequete.MotDePasse			= "pass
    RstRequete.Utilisateur			= "macle"
    //RstRequete.ContentType			=  "application/json"
    RstReponse					= RESTEnvoie(RstRequete)
     
    Désérialise(tabMaListeProduit,RstReponse..Contenu,psdJSON)  // Ici m'affiche le message : L'élément JSON n'est pas un tableau.
     
    POUR TOUT stMonProduit DE tabMaListeProduit
    	Trace(stMonProduit.Id,stMonProduit.name)
    FIN
    Nom : image_2022-05-12_071013703.png
Affichages : 281
Taille : 4,4 Ko
    Extrait de données en json

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 777
    Points : 5 191
    Points
    5 191
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Aux vues du JSON il est aisé de voir que les structures sont "imbriquées":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    STRésultat est une structure
        Product est un tableau de STProduits
    FIN
     
    STProduit est une structure
        id est un entier
    ......
    FIN
    A priori, tu utilises JSON sans jamais t'être intéressé à la manière dont il était structuré, je suppose qu'il en est de même pour XML.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 374
    Points : 42
    Points
    42
    Par défaut
    Bonjour

    Vraiment j'ai pas compris ton message

    j'ai essayé ce billet : Extraire simplement des données JSON dont la structure n'est pas connue à l'avance ...
    mais je dois la modifié

Discussions similaires

  1. API REST de Google
    Par stade13 dans le forum APIs Google
    Réponses: 3
    Dernier message: 29/10/2011, 12h02
  2. [XML] API REST : comment ca marche ?
    Par chuckichucki dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/01/2011, 14h33
  3. [Authentification] API REstful PHP
    Par yoshï dans le forum REST
    Réponses: 1
    Dernier message: 22/07/2008, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo