Delphi XE6- Consumir la api REST de Mercado Libre

Desde su versión XE5, Delphi incluye soporte REST así que aprovechando la nueva versión XE6 decidí crear este artículo para mostrar de qué manera podemos consumir la API REST de mercado libre para realizar múltiples operaciones sobre sus recursos. Esta Api se encuentra ampliamente documentada en el siguiente enlace: http://developers.mercadolibre.com/.  En este artículo nos basaremos en lo publicado por mercado libre en el siguiente enlace:  Cómo se usan las APIS y JSON y construiremos una aplicación que busque en mercado libre un articulo en un determinado rango de precios.

De acuerdo al ejemplo mostrado en la documentación esto puede hacerse usando curl para ejecutar una llamada de la siguiente manera:

curl_REST_Mercadolibre

Así que basándonos en el ejemplo ejecutaremos la herramienta que nos proporciona Embarcadero para facilitarnos el construir clientes REST: RESTDebugger.  Esta herramienta la encontraremos en el subdirectorio Bin del directorio de instalación de Delphi

RestDebugger

 

Si deseas conocer un poco más sobre el depurador Rest  te recomiendo ver el video relacionado con que participe en el CodeRage Latinoamérica: REST en Delphi.

Entonces, una vez que hemos ubicado el depurador Rest lo ejecutaremos y configuraremos de la siguiente manera:

En la pestaña Request:

  •  Method: Post
  • URL: https://api.mercadolibre.com/sites/MLA

request_restdebugger

 

En la pestaña Parameters

  • Resource: search
  • Request Parameters: [GET/POST] q=ipod,  [GET/POST] price=700.0-1000.0

 

parameters_restdebugger

 

 

Las pestañas restantes las dejaremos sin configurar.  Así que una vez configurado el request y parameters presionaremos el botón send request y debemos obtener en la pestaña body lo siguiente:

 

responsa_body_restdebugger

 

 

La respuesta devuelta por mercado libre es un bloque de datos en formato Json que podemos tratar como si fuera un dataset filtrando por cualquier nodo en la opción JSON Root Element, así que para hacer más sencilla la lectura vamos a colocar results como nodo raíz, aplicaremos y veremos lo que nos resulta en la pestaña tabular data:

response_tabular_data_restdebugger

 

Como podemos ver, ahora los datos son tratados como si fueran un Dataset lo que hace mucho más sencilla su lectura.

Hasta este punto, el depurador nos ha sido de mucha ayuda para probar las url y parámetros para consumir el servicio REST pero pasemos a lo siguiente que es consumir este servicio desde Delphi XE6. Antes de ejecutar Delphi presionaremos el botón copy components y nos aparecerá el siguiente mensaje informándonos que se han copiado en memoria los componentes necesarios para consumir el servicio:

copy_components_restdebugger

 

y luego entonces ejecutaremos Delphi y crearemos un nuevo proyecto VCL Forms. Una vez que se haya ejecutado presionarmoes CTRL+P para que se cren los componentes en memoria.

 

vcl_mercadolibre_rest

 

Como se puede ver, el depurador nos ha ahorrado todo el trabajo para la configuración de nuestros componentes así como su vinculación para tratar la resuesta como si fuera un dataset. Ahora agregaremos dos componentes más. Un datasource cuya propiedad  Dataset pondremos a FDMemTable1 y un DbGrid cuya propiedad DataSource la pondremos al Datasource1 que hemos agregado. Por último  damos click en RESTRequest con el botón derecho del  mouse y elegimos la opción Execute. Después de unos breves segundos veremos nuestro grid con la información devuelta por mercado libre:

 

mercado_libre_rest_dataset

El código fuente de este artículo podrás descargarlo en este enlace.

8 Comments

  1. Muy buen articulo.
    He tratado utilizarlo desde mi centro de trabajo(con proxy para internet) he configurado la pestaña conexion pero me da error en la conexion, sabrás a que se pueda deber esto?

Deja un comentario