Pour JMP 14, j'ai exercé le nouveau Requête HTTP objet trouvé dans JSL. Je suis tombé sur cette API, trouve ici: http://api.citybik.es/v2/ .
Ce service Web peut être utilisé pour localiser les données (et leur disponibilité) City Bike dans le monde entier. Il n'a que deux extrémités http://api.citybik.es/v2/networks et http://api.citybik.es/v2/networks/[id ] c'est donc une API Reste assez simple à utiliser. Cependant, la clé consiste à configurer l'objet de demande HTPP pour qu'il l'envoie au site Web, puis à traiter cette information. (Le traitement de l'information peut être aussi complexe que vous le souhaitez)
request = New HTTP Request(URL("http://api.citybik.es/v2/networks"), Method("Get"));
json = request << Send();
C’est tout ce qui est nécessaire pour obtenir des données du premier point de terminaison. JSON correspond aux données renvoyées par l'API. Depuis que je connais ce service Web, je sais que les données que je devrais récupérer sont Character et que c'est JSON, je vais juste vérifier:
!IsEmpty(json)
Cependant, vous pouvez vérifier le succès et le type MIME renvoyé comme suit:
request << Is Successful
request << Get Mime Type == "application/json"
La table de données JMP initiale créée à partir du script est la table City Bikes Network.
Il est créé à partir des données JSON renvoyées par le premier point de terminaison. Il existe [au moins] deux façons de traiter les données renvoyées. Le premier est:
JSON to Data Table(json)
Cela va essayer de créer une table de données JMP à partir des données. Pour les données "rectangulaires" ou "tabluar", cela fonctionne vraiment bien (et rapide). Cependant, tous les services Web ne renvoient pas de données tabulaires (City Bikes n'en est pas un). Cela nous amène à la deuxième façon de traiter les données renvoyées:
Parse JSON(json)
Cela crée un tableau associatif JSL. Cela signifie que vous n'avez pas à analyser le JSON vous-même dans JSL, mais vous devez savoir comment les données sont structurées. C'est vous aurez besoin de savoir si c'est une clé => valeur paire ou une clé => valeurs paire. Ce n'est pas aussi difficile qu'il y paraît car vous pouvez capturer la sortie brute de JSON comme:
write(json);
dans le journal et collez-le dans votre formateur JSON préféré. (J'utilise l'application JSON Editor Online dans Chrome). Cela signifie quelque chose comme ceci:
{
"networks": [
{
"company": [
"Bike U Sp. z o.o."
],
"href": "/v2/networks/bbbike",
"id": "bbbike",
"location": {
"city": "Bielsko-Bia\u0142a",
"country": "PL",
"latitude": 49.8225,
"longitude": 19.044444
},
"name": "BBBike"
},
...
...
}
Peut ressembler à ceci:
object {1}
networks {560}
0 {5}
company [1]
0 : Bike U Sp. z o.o
href: /v2/networks/bbbike
id: bbbike
location {4}
city: Bielsko-Biaia
country: PL
latitude: 49.8225
longitude: 19.044444
name: BBBike
...
...
En d'autres termes, quand vous voyez un [...] Dans JSON Editor Online, vous utilisez un tableau JSL. Quand tu vois un {...} , vous avez affaire à un tableau associatif JSL.
Une dernière remarque à propos du script est que je me sers de:
Set Property("Event Handler", ...
Je peux donc explorer le prochain point de terminaison.
Lorsque je clique sur l'hyperlien dans la colonne entreprise, j'utilise le company_id dans la même ligne pour créer une nouvelle requête HTTP avec l'URL:
"http://api.citybik.es/v2/networks/" || thisTable:company_id[iRow]
Cela me permet d’obtenir des informations plus détaillées sur la société City Bike et de créer une autre table de données JMP en utilisant le même processus que précédemment.
J'ai créé quelques exemples de scripts de table en utilisant Graph Builder, puis en les intégrant dans ma JSL.
Il existe de nombreuses autres API Rest, alors n'hésitez pas à les essayer.
Prendre plaisir,
Bryan Boone