Per JMP 14, ho esercitato il nuovo Richiesta HTTP oggetto trovato in JSL. Mi sono imbattuto in questa API, trova qui: http://api.citybik.es/v2/ .
Questo servizio web può essere utilizzato per localizzare i dati di City Bike (e disponibilità) in tutto il mondo. Ha solo due endpoint http://api.citybik.es/v2/networks e http://api.citybik.es/v2/networks/[id ] quindi è un'API Rest abbastanza semplice con cui lavorare. La chiave, tuttavia, è come configurare l'oggetto Richiesta HTPP da inviare al sito Web e quindi come elaborare tali informazioni. (Elaborazione delle informazioni può essere coinvolgente come vuoi essere)
request = New HTTP Request(URL("http://api.citybik.es/v2/networks"), Method("Get"));
json = request << Send();
Questo è tutto ciò che è necessario per ottenere i dati dal primo endpoint. json sono i dati che vengono restituiti dall'API. Dato che conosco questo servizio web, so che i dati che dovrei recuperare è Character ed è JSON, mi limiterò a controllare:
!IsEmpty(json)
Tuttavia, è possibile verificare la riuscita e il tipo restituito come:
request << Is Successful
request << Get Mime Type == "application/json"
La tabella dati JMP iniziale creata dallo script è la tabella della rete City Bikes.
È creato dai dati JSON restituiti dal primo endpoint. Ci sono [almeno] due modi per elaborare i dati restituiti. Il primo è:
JSON to Data Table(json)
Questo tenterà di creare una tabella dati JMP dai dati. Per i dati "rettangolari" o "tabluar" questo funziona davvero bene (e veloce). Tuttavia, non tutti i webservices restituiscono dati tabulari (City Bikes è uno che non lo fa). Questo ci porta al secondo modo di elaborare i dati restituiti:
Parse JSON(json)
Questo crea una matrice associativa JSL. Ciò significa che non devi analizzare da solo il JSON in JSL, ma devi, comunque, sapere come sono strutturati i dati. Questo è necessario per sapere se è una chiave => valore coppia o un tasto => valori paio. Questo non è così difficile come sembra dal momento che è possibile catturare l'output di JSON come:
write(json);
nel registro e incollarlo nel tuo formattatore JSON preferito. (Uso l'app JSON Editor Online in Chrome). Questo significa qualcosa come questo:
{
"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"
},
...
...
}
Può assomigliare a questo:
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
...
...
In altre parole, quando vedi un [...] in JSON Editor Online, hai a che fare con un array JSL. Quando vedi un {...} , hai a che fare con una matrice associativa JSL.
Un'altra nota che voglio fare riguardo alla sceneggiatura è che utilizzo:
Set Property("Event Handler", ...
Quindi posso approfondire il prossimo endpoint.
Quando faccio clic sul collegamento ipertestuale nella colonna dell'azienda, utilizzo il comando Codice Identificativo dell'azienda nella stessa riga per creare una nuova richiesta HTTP con l'url:
"http://api.citybik.es/v2/networks/" || thisTable:company_id[iRow]
Ciò mi consente di ottenere informazioni più dettagliate sulla società City Bike e creo un'altra tabella dati JMP utilizzando la stessa procedura di prima.
Ho creato un paio di script della tabella di esempio utilizzando Graph Builder e quindi li ho incorporati nella mia JSL.
Ci sono molte, molte altre API di rest in giro, quindi sentiti libero di provarle.
Godere,
Bryan Boone