Samuel
MembreRéponses céées sur le Forum
-
Bonjour,
J’ai moi-même rencontré ce problème avec une API.
D’abord, votre API gère t’elle la pagination ?
Quand on fait un appel à une API, il y a des pages, chaque page contient un nombre de bloc.
Je suppose que ton erreur vient de là, il est impossible de lire en une seule fois toutes tes données.
Je n’ai pas encore réussi mais tu trouveras un sujet que j’ai lancé où l’on parle de boucle.
Le principe à travers un script python ou autre est de boucler sur toutes les pages de ton API.
C’est une piste qu’on m’a évoqué.
Si vous trouvez, je suis preneur.
Bien à vous,
-
Bonjour et merci pour votre réponse, je vais creuser dans ce sens.
Bien à vous,
-
Bonjour Jonathan,
Désolé pour la longue absence, j’ai avancé sur mon loop API et je vous explique.
- J’ai créé une fonction appelé (GetPage) :
(page) =>
let
Source = Json.Document(Web.Contents(“Mon API?page=” & Text.From(page),
[Headers=[#”X-Gravitee-Api-Key”=”API KEY”]]))
in
Source- J’ai créé une table qui me retourne une nombre entier (MaxPage) :
let
Source = Json.Document(Web.Contents(“Mon API”,
[Headers=[#”X-Gravitee-Api-Key”=”API KEY”]])),
#”hydra:view” = Source[#”hydra:view”],
#”Converti en table” = Record.ToTable(#”hydra:view”),
#”Lignes filtrées” = Table.SelectRows(#”Converti en table”, each ([Name] = “hydra:last”)),
#”Valeur remplacée” = Table.ReplaceValue(#”Lignes filtrées”,”/vehicules/v1/vehicules?page=”,””,Replacer.ReplaceText,{“Value”}),
#”Colonnes supprimées” = Table.RemoveColumns(#”Valeur remplacée”,{“Name”}),
#”Type modifié” = Table.TransformColumnTypes(#”Colonnes supprimées”,{{“Value”, Int64.Type}}),
Value = #”Type modifié”{0}[Value],
#”Valeur absolue calculée” = Number.Abs(Value)
in
#”Valeur absolue calculée”- J’ai enfin créé une table (Vehicule) :
let
Source = List.Generate(
() => [page = 1, vehicule = Json.Document(Web.Contents(“Mon API?page=” & Text.From(page),
[Headers=[#”X-Gravitee-Api-Key”=”API KEY”]]))],
each [page] <= 61, (Ici quand je mets 61 j’obtiens bien la liste que je souhaite, par contre quand je mets MaxPage que j’ai créé précédemment pour automatiser, ça ne marche pas, pourtant c’est bien une valeur nombre entier).
each [vehicule = GetPage([page]), page = [page] +1 ]
)
in
SourceC’est là que je pêche, je ne comprends pas…..
Merci à vous !
-
Ah, je crois que cela s’intitule page_last dans mon API
-
Merci pour votre gentillesse..
Question, FactAPICallInfo c’est mon API ?
-
Bonjour Jonathan,
Merci de prendre un peu de temps.
Je comprends très bien ce que vous dites, c’est très explicite.
Dans mon appel API, par défaut j’ai la page 1 avec 30 résultats, si je demande la page 2, j’aurais la page 2 avec 30 résultats.
Donc je vais travailler votre exemple et je vous tiens au courant.
Merci à vous,
Sam.
-
Voilà ce que j’obtiens.
(NumPage as text) =>
let
Source = Json.Document(Web.Contents(“Mon API”,
[
Headers=[#”X-Gravitee-Api-Key”=”Ici la clé”],
RelativePath=”/api/vehicules/v1/vehicules?page=”&NumPage
]))
in
SourcePourriez-vous me dire où dois-je mettre la fonction Number.list() ?
Merci à vous !
-
Bonjour Brice,
Merci à vous…
Je vais tester votre solution et reviens vers vous.
Je sais que l’API créée en php par notre DSI comporte un paramètre pagination car il y a beaucoup de données.
Donc je dois trouver un contournement.
Merci à vous,
Sam
-
Bonjour Brice,
Merci pour votre réponse, mais il me semble que ce script en Python demande une entrée ?
Si c’est le cas, il faudrait trouver le nombre de page max qui se trouve dans l’appel de l’API et à partir de là, faire une boucle.
Lors de l’appel de l’API le retour en json donne un item page_last qui correspond à la dernière page.
J’aimerais que ma requête ou fonction en Python soit automatique en lecture.
Bien à vous,
Sam.