Para JMP 14, he estado ejercitando el nuevo Solicitud HTTP objeto encontrado en JSL.Encontré esta API, se encuentra aquí: http://api.citybik.es/v2/ .
Este servicio web se puede utilizar para localizar datos de City Bike (y disponibilidad) en todo el mundo.Solo tiene dos extremos http://api.citybik.es/v2/redes y http://api.citybik.es/v2/networks/[id ] por lo que es una API Rest bastante simple para trabajar.Sin embargo, la clave es cómo configurar el objeto de solicitud HTTP para enviarlo al sitio web y luego cómo procesar esa información.(El procesamiento de la información puede ser tan complicado como quieras)
request = New HTTP Request(URL("http://api.citybik.es/v2/networks"), Method("Get"));
json = request << Send();
Esto es todo lo que se requiere para obtener datos del primer punto final. json son los datos que se devuelven desde la API.Como conozco este servicio web, sé que los datos que debería recibir son caracteres y JSON, solo revisaré:
!IsEmpty(json)
Sin embargo, puede verificar el éxito y el tipo MIME devuelto como:
request << Is Successful
request << Get Mime Type == "application/json"
La tabla de datos JMP inicial creada a partir del script es la tabla City Bikes Network.
Se crea a partir de los datos json que se devuelven desde el primer punto final.Hay [al menos] dos formas de procesar los datos devueltos.El primero es:
JSON to Data Table(json)
Esto intentará crear una tabla de datos JMP a partir de los datos.Para datos "rectangulares" o "tabluares", esto funciona muy bien (y rápido).Sin embargo, no todos los servicios web devuelven datos tabulares (City Bikes es uno que no lo hace). Esto nos lleva a la segunda forma de procesar los datos devueltos:
Parse JSON(json)
Esto crea una matriz asociativa JSL.Esto significa que no tiene que analizar el JSON usted mismo en JSL, pero lo hace, sin embargo, necesita saber cómo se estructuran los datos.Eso es lo que necesitará saber si es una clave => valor par o una llave => valores par.Esto no es tan difícil como parece, ya que puede capturar la salida json sin procesar como:
write(json);
en el registro y péguelo en su formateador json favorito. (Uso la aplicación JSON Editor Online en Chrome). Esto significa algo como esto:
{
"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"
},
...
...
}
Puede verse así:
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 otras palabras, cuando ves un [...] en JSON Editor Online, se trata de una matriz JSL.cuando ves un {...} , se trata de una matriz asociativa JSL.
Una nota más que quiero hacer sobre el script es que hago uso de:
Set Property("Event Handler", ...
Entonces puedo profundizar en el siguiente punto final.
Cuando hago clic en el hipervínculo en la columna de la empresa, utilizo el ID de la compañía en la misma fila para crear una nueva solicitud HTTP con la url:
"http://api.citybik.es/v2/networks/" || thisTable:company_id[iRow]
Eso me permite obtener información más detallada sobre la empresa City Bike y creo otra tabla de datos JMP usando el mismo proceso que antes.
Creé un par de scripts de tabla de muestra usando Graph Builder y luego incrustándolos en mi JSL.
Hay muchas, muchas API Rest por ahí, así que siéntete libre de probarlas.
Disfrutar,
bryan boone