Automatic API REST Droidcon

42
Automatic API REST Simplifica tus consultas Alejandro Esquiva Rodríguez (@alex_esquiva) Automatic API REST: Simplifica tus consultas by Geeky Theory is licensed under a Creative Commons Reconocimiento- NoComercial-CompartirIgual 4.0 Internacional License.

description

Ponencia en el Droidcon Madrid 2014

Transcript of Automatic API REST Droidcon

Page 1: Automatic API REST Droidcon

Automatic API REST

Simplifica tus consultas

Alejandro Esquiva Rodríguez

(@alex_esquiva)

Automatic API REST: Simplifica tus consultas by Geeky Theory is

licensed under a Creative Commons Reconocimiento-

NoComercial-CompartirIgual 4.0 Internacional License.

Page 2: Automatic API REST Droidcon

¿Quiénes Somos?

• Geeky Theory es comunidad de “geeks para geeks”,

para los amantes de las nuevas tecnologías.

• Misión: Compartir conocimientos. Creamos tutoriales

y artículos sobre diversos temas: Android, Arduino,

Raspberry Pi, Java, PHP, Windows Phone, entre

otros.

Page 3: Automatic API REST Droidcon

¿Quiénes Somos?

Miguel CatalánMario Pérez Jesualdo Ros

Luis Belzunce

Alejandro Esquiva

Osmary Guevara Dachi Gogotchurri

Page 4: Automatic API REST Droidcon

¿Quiénes Somos?

Objetivos:

• Ser una web influyente y de referencia en el ámbito geek.

• Enseñar, inspirar y ayudar a programar.

• Generar conocimientos y debates relacionados con las áreas STEM

(ciencia, tecnología, ingeniería y matemáticas).

• Crecer. Queremos más autores, más publicaciones, más conocimientos.

Page 5: Automatic API REST Droidcon

¿Qué es una API REST?

API

• Una API representa una interfaz de comunicación entre componentes de

software.

Page 6: Automatic API REST Droidcon

¿Qué es una API REST?

REST

• Transferencia de estado Representacional.

• Está orientado a transferencia de recursos.

• Arquitectura cliente/servidor sin estado: ni el cliente ni el servidor necesitan

recordar ningún estado de las comunicaciones entre mensajes.

• Hace uso del protocolo HTTP.

• Cada recurso es únicamente accesible a través de su URI.

• Los datos son generalmente ofrecidos en formato JSON o XML .

• Control de errores.

Page 7: Automatic API REST Droidcon

¿Qué es una API REST?

Cada recurso es accesible a través de una única URI.

URIs

Page 8: Automatic API REST Droidcon

¿Qué es una API REST?

El cliente hace peticiones al

servidor usando el protocolo

HTTP. El servidor le responde a

través del mismo protocolo.

Arquitectura Cliente - Servidor

Page 9: Automatic API REST Droidcon

¿Qué es una API REST?

• GETPedir información a un recurso.

• POSTCreate: Orden para insertar información.

Update: Modificar información.

• PUTCreate: Orden para insertar información.

Update: Modificar información.

• DELETEEliminar información del servidor.

Operadores API REST

Page 10: Automatic API REST Droidcon

¿Qué es una API REST?

JSON

Formatos de salida

XML

Page 11: Automatic API REST Droidcon

¿Qué es una API REST?

Ejemplos de APIs

Page 12: Automatic API REST Droidcon

Android y APIs

Necesidad

• Base de datos externa.

• Interacción de datos entre servidor y cliente.

• Aplicaciones multiplataforma

Page 13: Automatic API REST Droidcon

Automatic API REST

¿Qué es?• Una herramienta Open Source.

• Crea una completa API de tu base de

datos MySQL o MariaDB.

• Proporciona una red automática de

enlaces que proporcionan la información

en JSON o XML.

• Intercambia información entre distintos

lenguajes de programación.

• Panel de control para gestionar la

privacidad de las tablas o campos de la

base de datos.

http://AutomaticApiRest.info

Page 14: Automatic API REST Droidcon

Automatic API REST

Especificaciones

• Creación de enlaces únicos para cada recurso (URIs)

• Gestión de privacidad de las tablas.

• No altera la estructura de la base de datos.

• Obtener datos (GET) en formato JSON y XML.

• Insertar datos (POST) a través de enlaces únicos.

• Modificar Datos (POST) a través de enlaces únicos.

• Gestión de errores.

Page 15: Automatic API REST Droidcon

Automatic API REST

Modo de empleo

• Aplicación de servidor

1. Instalar Automatic Api Rest en un servidor con soporte para PHP y MySQL.

2. Configurar el archivo config.php con los credenciales del servidor y apuntar a

nuestra base de datos.

3. Entrar en el panel de control con los credenciales que hemos indicado en el archivo

config.php

4. Indicar que tablas y campos son privados, deshabilitando la opción de

obtener/añadir/modificar/eliminar datos.

Page 16: Automatic API REST Droidcon

Automatic API REST

Modo de empleo (GET)

• Aplicación de cliente (java, Python, c++,…)

1. Seleccionar los enlaces que queremos consultar desde el panel de control de

Automatic API Rest.

2. Obtener el json/xml de la petición.

3. Parsear datos obtenidos.

Page 17: Automatic API REST Droidcon

Automatic API REST

Modo de empleo (POST)

• Aplicación de cliente (java, Python, c++,…)

1. Seleccionar el enlace donde queremos enviar la información.

2. Preparamos un json o xml (también se puede insertar desde parámetros POST) con

los datos a insertar o modificar.

3. Enviar la petición

4. Obtenemos la respuesta con los resultados de la consulta

Page 18: Automatic API REST Droidcon

Cuando Usar Automatic API REST

• ¿Tienes una aplicación que necesite obtener datos de

una base de datos externa?

• ¿Tienes una aplicación que sea multiplataforma?

• ¿Quieres ahorrar tiempo en el desarrollo de una API?

Page 19: Automatic API REST Droidcon

Ejemplo de uso: Base de datos

Descarga de la base de datos de prueba.

http://dev.mysql.com/doc/index-other.html

• Base de datos: World

• Número de tablas: 3

• city: 4079 filas

• country: 239 filas

• countrylanguage: 991 filas

city

countrylanguage

country

Page 20: Automatic API REST Droidcon

Ejemplo de uso: Instalación

1. Descargamos Automatic API REST.

2. Extraer el zip y subir todo el directorio a la raíz principal

de vuestro servidor.

3. Abrir el archivo config.php y rellenar todos los campos

con los credenciales de la base de datos.

4. Visitar

http://tudominio.com/AutomaticaApiRest

Page 21: Automatic API REST Droidcon

Ejemplo de uso: Config.php

• SERVER: localhost

• USER: Usuario de la base de datos

• PASS: Contraseña del usuario de la base de datos

• DB: Base de datos a la que queremos apuntar

• USERADMIN: cuenta de administrador de AAR

• PASSADMIN: contraseña de administrador

Page 22: Automatic API REST Droidcon

Ejemplo de uso: Log In

http://tudominio.com/AutomaticaApiRest

Page 23: Automatic API REST Droidcon

Ejemplo de uso: Panel de Control

Page 24: Automatic API REST Droidcon

Ejemplo de uso: Navegación

Home: Enlace al inicio del panel de control.

Documentation: Documentación del proyecto. [En Construcción]

Black List: Gestión de las tablas privadas.

GitHub: Enlace al proyecto en GitHub

Close: Cierre de la sesión.

Page 25: Automatic API REST Droidcon

Ejemplo de uso: Gestión de tablas

Table Name: Nombre de la tabla de la base de datos.

API Link: Dirección única del recurso donde vamos a consultar todos los datos en formato JSON

de la tabla.

Items: Número de Items que tiene la tabla.

Show Table: Mostrar una tabla con los datos de la tabla seleccionada.

Privacity: Esta casilla muestra si la tabla es pública o privada, en caso de que sea privada no se

podrá ni consultar ni gestionar la tabla.

Page 26: Automatic API REST Droidcon

Ejemplo de uso: Gestión de campos

Column: Nombre del campo de la tabla seleccionada.

API Link: Enlace que genera un JSON con toda la información del campo encapsulado.

Show Table: Ver una tabla con los datos del campo seleccionado.

Select: Consulta personalizada (Ver siguiente punto).

Privacity: Privacidad del campo.

Page 27: Automatic API REST Droidcon

Ejemplo de uso: Consulta Personalizada

Observamos que podemos personalizar la consulta de datos, si por ejemplo sólo nos interesa el ID

y el nombre de los últimos 5 registros de la tabla city ordenados por el campo Name generamos

un enlace que exactamente nos ofrezca eso.

Page 28: Automatic API REST Droidcon

Ejemplo de uso: Black List

La Black List muestra todos las tablas y columnas que no permitimos ni obtener ni insertar datos.

Desde esta misma tabla podemos eliminar los registros de la Black List.

Page 29: Automatic API REST Droidcon

Ejemplo de uso: Salida JSON

{"data":[{"0":"\u00b4s-Hertogenbosch","Name":"\u00b4s-

Hertogenbosch","1":"Noord-Brabant","District":"Noord-

Brabant","2":"129170","Population":"129170"},{"0":"\u0160umen

","Name":"\u0160umen","1":"Varna","District":"Varna","2":"9468

6","Population":"94686"},{"0":"\u0160t\u0161olkovo","Name":"\u

0160t\u0161olkovo","1":"Moskova","District":"Moskova","2":"104

900","Population":"104900"},{"0":"\u0160ostka","Name":"\u0160

ostka","1":"Sumy","District":"Sumy","2":"90000","Population":"90

000"},{"0":"\u0160iauliai","Name":"\u0160iauliai","1":"\u0160iauli

ai","District":"\u0160iauliai","2":"146563","Population":"146563"}]

,"dbInfo":["Name","District","Population"]}

Page 30: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

Obtener información en JAVA

• Creación de una clase para la

obtención y gestión de datos.

• Creación de métodos

necesarios para parsear JSONs

y obtener los datos a través de

un enlace dado.

Page 31: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

getJSON

• Obtiene un JSON a través de

un enlace dado

Page 32: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

getDataStringArray

• Hace uso de la librería json-simple-

1.1.1.jar

• Devuelve un array multidimensional

de Strings con la información del

JSON

Page 33: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

setData

Page 34: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 1: Obtención de un dato

Page 35: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 2: Inserción de datos

Page 36: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 3: Código de errores [Invalid Parameters]

Page 37: Automatic API REST Droidcon

Ejemplo de uso: Aplicación Cliente - Java

Ejemplo 4: Código de errores [Unauthorized]

Campo privada: CountryCode

Page 38: Automatic API REST Droidcon

Automatic API REST (alpha/beta)

Actualmente Automatic API REST es un projecto alpha, falta implementar mejoras y

crear una documentación para cada tipo de lenguaje.

Page 39: Automatic API REST Droidcon

Líneas Futuras de AAR

• Documentación de cada plataforma

• Creación de librerías para cada plataforma que facilite el uso de AAR

• Implementación de seguridad con OAUTH 2.0

• Dar soporte a consultas complejas, WHERE, INNER, etc.

• Escoger permisos de cada tabla/campo, elegir permisos de cada campo.

• Gestión óptima de URIs

Page 40: Automatic API REST Droidcon

Proyecto Open Source

• Automatic API REST es un proyecto

Open Source, todo el mundo es

bienvenido a colaborar.

• Para colaborar, enviar directamente

vuestros pull request o enviar un correo a

[email protected]

Page 41: Automatic API REST Droidcon

Gracias

Alejandro Esquiva

Rodriguez

Page 42: Automatic API REST Droidcon

/aesquiva

http://geekytheory.com

@alex_esquiva @GeekyTheory

http://AutomaticApiRest.info

/geekytheory