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 :

Débutant - Appel API REST(Windev 2024) [Généralités]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Débutant - Appel API REST(Windev 2024)
    Bonjour,

    Une petite question de débutant. J'essaie de récupérer quelques infos sur l'appel du service mais je bloque depuis un moment.
    J'ai bien un réponse avec la structure JSON correspondante à l'appel mais le passage vers un Variant (j'ai suivi le tuto Windev) pour exploiter les données ne me donne rien.

    Voici le code :

    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
    Req			est un restRequête
    Rep			est un restRéponse
    RepVariant	est un Variant
     
    Req.URL	= "https://api-adresse.data.gouv.fr/search/?q=paris&limit=2"
    Rep	= RESTEnvoie(Req)
     
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errComplet))
    SINON
    	Info(Rep.Contenu)
    	RepVariant = JSONVersVariant(Rep.Contenu)
    	POUR TOUT ListeVille DE RepVariant.results
    		Info(ListeVille.city)
    	FIN
    FIN
    Auriez vous par hasard une idée ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 817
    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 817
    Points : 5 279
    Points
    5 279
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Quelle idée étrange de passer par un variant au lieu de désérialiser. Comment ferais tu si le résultat était du XML ou du binaire ?
    Dans tous les cas de ficgure, le résultat se structure de la manière suivante :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    STgeometry est une structure
    	type est une chaîne
    	coordinates est un tableau de chaînes
    FIN
     
    STproperties est une structure
    	label est une chaîne
    	score est un numérique
    	id est une chaîne
    	type est une chaîne
    	name est une chaîne
    	postcode est une chaîne
    	citycode est une chaîne
    	x est un numérique
    	y est un numérique
    	population est un numérique
    	city est une chaîne
    	context est une chaîne
    	importance est un numérique
    	municipality est une chaîne
    	street est une chaîne
    FIN
     
    STfeatures est une structure
    	type est une chaîne
    	geometry est un STgeometry
    	properties est un STproperties
    FIN
     
    STResult est une structure     //Le contenu de la réponse.
    	type est une chaîne
    	version est une chaîne
    	features est un tableau de STfeatures
    	attribution est une chaîne
    	licence est une chaîne
    	query est une chaîne
    	limit est un numérique
    FIN
     
    Resultat est un STResult
    On voit bien
    1-Que STRésult n'est pas un tableau donc que le POUR TOUT est inutile
    2-Qu'il n'y a pas de membre city accessible directement via STRésult.

    city est un membre de STProperty. Les occurence de STProperty sont accessibles via les STFeature.
    on a donc city=Resultat.features[...].properties.city.

    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
     
    Req			est un restRequête
    Rep			est un restRéponse
    stRésultat est STResult
    stDétail est STFeature
     
    Req.URL	= "https://api-adresse.data.gouv.fr/search/?q=paris&limit=2"
    Rep	= RESTEnvoie(Req)
     
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errComplet))
    SINON
    	Info(Rep.Contenu)
    	Désérialise(stRésultat,Rep.Contenu,psdJSON)
    	POUR TOUT stDétail DE stRésultat.features
    		trace(stDétail.properties.city)
    	FIN
    FIN
    Pour plus d'info, je te renvoie ici
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Top
    Bonjour

    Merci beaucoup pour tes éclaircissements et le temps que tu as pris pour me faire une réponse précise.
    Effectivement, sur le variant, j'avais juste repris un tuto Windev.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel web service API REST
    Par jimbolion dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/07/2020, 09h30
  2. API REST documentation et appel
    Par soazig dans le forum Services Web
    Réponses: 2
    Dernier message: 23/04/2019, 10h56
  3. Windev et API RESTFUL
    Par lenamtl dans le forum WinDev
    Réponses: 6
    Dernier message: 18/10/2018, 15h39
  4. [Débutant] C# appel à l'API REST Ooyala Pulse
    Par Gregory.Martin dans le forum C#
    Réponses: 2
    Dernier message: 22/02/2016, 17h55
  5. Appeler une api Rest depuis un serveur d'application
    Par marc11 dans le forum Java EE
    Réponses: 1
    Dernier message: 25/02/2013, 10h25

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