SlideShare a Scribd company logo
1 of 66
Automatic API REST
+
Notificaciones PUSH
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.
Objetivo del Taller
Herramientas que vamos a usar
• http://androidparty.geekytheory.com/material.rar
• http://www.easyphp.org/save-easyphp-devservervc9-latest.php
Automatic API REST
¿Qué es una API REST?
API
• Una API representa una interfaz de comunicación entre componentes de
software.
¿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.
¿Qué es una API REST?
Cada recurso es accesible a través de una única URI.
URIs
¿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
¿Qué es una API REST?
• GET
Pedir información a un recurso.
• POST
Create: Orden para insertar información.
Update: Modificar información.
• PUT
Create: Orden para insertar información.
Update: Modificar información.
• DELETE
Eliminar información del servidor.
Operadores API REST
¿Qué es una API REST?
JSON
Formatos de salida
XML
¿Qué es una API REST?
Ejemplos de APIs
Android y APIs
Necesidad
• Base de datos externa.
• Interacción de datos entre servidor y cliente.
• Aplicaciones multiplataforma
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
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.
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.
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.
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
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?
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
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
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
Ejemplo de uso: Log In
http://tudominio.com/AutomaticaApiRest
Ejemplo de uso: Panel de Control
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.
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.
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.
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.
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.
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":"u0160tu0161olkovo","Name":"u
0160tu0161olkovo","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"]}
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.
Ejemplo de uso: Aplicación Cliente - Java
getJSON
• Obtiene un JSON a través de
un enlace dado
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
Ejemplo de uso: Aplicación Cliente - Java
setData
Ejemplo de uso: Aplicación Cliente - Java
Ejemplo 1: Obtención de un dato
Ejemplo de uso: Aplicación Cliente - Java
Ejemplo 2: Inserción de datos
Ejemplo de uso: Aplicación Cliente - Java
Ejemplo 3: Código de errores [Invalid Parameters]
Ejemplo de uso: Aplicación Cliente - Java
Ejemplo 4: Código de errores [Unauthorized]
Campo privada: CountryCode
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.
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
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
alejandro@geekytheory.com
Notificaciones PUSH
Ecosistema
1. El dispositivo Android envía el ID de aplicación
de GCM.
2. El servicio GCM devuelve un Id de registro
único por aplicación y dispositivo.
3. Enviamos este id a nuestra aplicación de
servidor.
4. Almacenamos el id en la base de datos
externa.
5. Si queremos enviar una notificación,
obtenemos el id de la base de datos y
enviamos el mensaje a GCM.
6. GCM enviará el mensaje a nuestra aplicación.
Objetivo del Taller
Pasos a seguir
1. Registrarse en Google Cloud Messaging (GCM) desde Google API
Console y obtener el Sender ID y la API key.
2. Crear una base de datos donde almacenaremos los ids de los usuarios.
3. Instala Automatic Api Rest (Opcional) y apuntar a la base de datos creada.
4. Crear una aplicación de servidor donde este a la escucha de ordenes para
enviar notificaciones PUSH.
5. Crear una aplicación de cliente (Android) para obtener los Ids y
almacenarlas en la base de datos y poder enviar notificaciones.
Obtener Sender ID y API Key
1. https://code.google.com/apis/console
Obtener Sender ID y API Key
2. Obtener Sender ID:
Obtener Sender ID y API Key
3. Activar API
Obtener Sender ID y API Key
4. Activar Google Cloud Messaging for Android
Obtener Sender ID y API Key
5. Ir a Credenciales
Obtener Sender ID y API Key
6. Generar API Key
Creación de una base de datos externa
Instalamos Automatic API REST
Crear una aplicación de servidor para enviar Notificaciones
sendNotification.php
Aplicación Android
Aplicación Android
Librerias
https://dl-ssl.google.com/android/repository/gcm_r03.zip
GCM
https://json-simple.googlecode.com/files/json-simple-1.1.1.jar
json-simple
Aplicación Android
AndroidManifest.xml
Aplicación Android
Config.java
Aplicación Android
AutomaticApiRestClient.java
Aplicación Android
Controller.java
Aplicación Android
RegisterActivity.java
Aplicación Android
ListviewActivity.java
Aplicación Android
SendMessageActivity.java
Aplicación Android
GCMIntentService.java
Referencias
• Tutorial sobre Notificaciones PUSH
• http://androidexample.com/Android_Push_Notifications_using_Google_Cloud_Messaging_GCM/index.php?view=
article_discription&aid=119&aaid=139
• Serie de tutoriales sobre JSON
• http://geekytheory.com/category/geeky-theory-2/tutoriales-2/programacion-web/json/
• Tutorial sobre Automatic Api Rest
• http://geekytheory.com/automatic-api-rest/
• Serie de tutoriales sobre JAVA – PHP –MYSQL
• http://geekytheory.com/category/java-php-mysql/
• Tutoriales Sobre PHP & MySQL
• http://geekytheory.com/category/geeky-theory-2/tutoriales-2/programacion-web/php-mysql/
Gracias
Alejandro Esquiva
Rodriguez
/aesquiva
http://geekytheory.com
@alex_esquiva @GeekyTheory
http://AutomaticApiRest.info
/geekytheory

More Related Content

What's hot

Seccion 27
Seccion 27Seccion 27
Seccion 27dyp2008
 
Papeles de auditoria, simbologia,clasificacion
Papeles de auditoria, simbologia,clasificacionPapeles de auditoria, simbologia,clasificacion
Papeles de auditoria, simbologia,clasificacionNadhaly Ramos
 
Auditoria interna presentacion
Auditoria interna presentacionAuditoria interna presentacion
Auditoria interna presentacionrafavega79
 
IMPUESTO ALA RENTA 1RA CATEGORIA
IMPUESTO ALA RENTA 1RA CATEGORIAIMPUESTO ALA RENTA 1RA CATEGORIA
IMPUESTO ALA RENTA 1RA CATEGORIAJose Sovero Mucha
 
NIA 805 auditorias de un solo estado financiero
NIA 805 auditorias de un solo estado financieroNIA 805 auditorias de un solo estado financiero
NIA 805 auditorias de un solo estado financierorrvn73
 
Nia570 negocio en marcha
Nia570 negocio en marchaNia570 negocio en marcha
Nia570 negocio en marchaHector Xp
 
Normas básicas de la auditoria gubernamental.
Normas básicas de la auditoria gubernamental.Normas básicas de la auditoria gubernamental.
Normas básicas de la auditoria gubernamental.pao1605
 
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...Amazon Web Services Korea
 
Nias Vs Nagas
Nias Vs NagasNias Vs Nagas
Nias Vs Nagassebasbsc
 
NIC 16
NIC 16NIC 16
NIC 16Ferisr
 
Building Serverless Microservices Using Serverless Framework on the Cloud
Building Serverless Microservices Using Serverless Framework on the CloudBuilding Serverless Microservices Using Serverless Framework on the Cloud
Building Serverless Microservices Using Serverless Framework on the CloudSrini Karlekar
 
UNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERA
UNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERAUNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERA
UNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERAGenesis Acosta
 

What's hot (20)

Seccion 27
Seccion 27Seccion 27
Seccion 27
 
Nia 620 700-706
Nia 620 700-706Nia 620 700-706
Nia 620 700-706
 
Papeles de auditoria, simbologia,clasificacion
Papeles de auditoria, simbologia,clasificacionPapeles de auditoria, simbologia,clasificacion
Papeles de auditoria, simbologia,clasificacion
 
01 programa de auditoria
01 programa de auditoria01 programa de auditoria
01 programa de auditoria
 
Auditoria interna presentacion
Auditoria interna presentacionAuditoria interna presentacion
Auditoria interna presentacion
 
Tema1 concepto y clasificacion de la auditoria
Tema1 concepto y clasificacion de la auditoriaTema1 concepto y clasificacion de la auditoria
Tema1 concepto y clasificacion de la auditoria
 
Coso 2
Coso 2Coso 2
Coso 2
 
Auditoria fiscal externa
Auditoria fiscal externaAuditoria fiscal externa
Auditoria fiscal externa
 
IMPUESTO ALA RENTA 1RA CATEGORIA
IMPUESTO ALA RENTA 1RA CATEGORIAIMPUESTO ALA RENTA 1RA CATEGORIA
IMPUESTO ALA RENTA 1RA CATEGORIA
 
NIA 805 auditorias de un solo estado financiero
NIA 805 auditorias de un solo estado financieroNIA 805 auditorias de un solo estado financiero
NIA 805 auditorias de un solo estado financiero
 
Nia570 negocio en marcha
Nia570 negocio en marchaNia570 negocio en marcha
Nia570 negocio en marcha
 
Programa de auditoria
Programa de auditoriaPrograma de auditoria
Programa de auditoria
 
Normas básicas de la auditoria gubernamental.
Normas básicas de la auditoria gubernamental.Normas básicas de la auditoria gubernamental.
Normas básicas de la auditoria gubernamental.
 
Peritaje contable
Peritaje contablePeritaje contable
Peritaje contable
 
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
AWS 비용 효율화를 고려한 Reserved Instance + Savings Plan 옵션 - 박윤 어카운트 매니저 :: AWS Game...
 
Nias Vs Nagas
Nias Vs NagasNias Vs Nagas
Nias Vs Nagas
 
NIC 16
NIC 16NIC 16
NIC 16
 
Nia 315 y 320
Nia 315 y 320Nia 315 y 320
Nia 315 y 320
 
Building Serverless Microservices Using Serverless Framework on the Cloud
Building Serverless Microservices Using Serverless Framework on the CloudBuilding Serverless Microservices Using Serverless Framework on the Cloud
Building Serverless Microservices Using Serverless Framework on the Cloud
 
UNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERA
UNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERAUNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERA
UNIDAD 1 LA IMPORTANCIA DE LA INFORMACIÓN FINANCIERA
 

Viewers also liked

Why vREST?
Why vREST?Why vREST?
Why vREST?vrest_io
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCParadigma Digital
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAPea2014G3
 
Laravel Restful API and AngularJS
Laravel Restful API and AngularJSLaravel Restful API and AngularJS
Laravel Restful API and AngularJSBlake Newman
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reesebuildacloud
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with PythonJeff Knupp
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with PythonLarry Cai
 
Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura RestIsrael Rey
 

Viewers also liked (11)

Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
 
Why vREST?
Why vREST?Why vREST?
Why vREST?
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
Laravel Restful API and AngularJS
Laravel Restful API and AngularJSLaravel Restful API and AngularJS
Laravel Restful API and AngularJS
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reese
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with Python
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with Python
 
Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura Rest
 

Similar to Taller Android Party: Automatic API REST + Notificaciones PUSH

Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apisCloudAppi
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza.NET Conf UY
 
Creacion Apirest Back{4}app
Creacion Apirest Back{4}appCreacion Apirest Back{4}app
Creacion Apirest Back{4}appblackmatt
 
Arquitectura de una Apis Rest en C.pptx
Arquitectura de una Apis  Rest en C.pptxArquitectura de una Apis  Rest en C.pptx
Arquitectura de una Apis Rest en C.pptxRonaldoJos15
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació WebCarlesMG57
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbaoAsier Marqués
 
Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]Antonio Torres
 
Desarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZDesarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZequipo24
 

Similar to Taller Android Party: Automatic API REST + Notificaciones PUSH (20)

Rest
RestRest
Rest
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apis
 
RAML
RAMLRAML
RAML
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
Aplicaciones Web
Aplicaciones WebAplicaciones Web
Aplicaciones Web
 
Introducción a ASP.NET Web API
Introducción a ASP.NET Web APIIntroducción a ASP.NET Web API
Introducción a ASP.NET Web API
 
Creacion Apirest Back{4}app
Creacion Apirest Back{4}appCreacion Apirest Back{4}app
Creacion Apirest Back{4}app
 
Arquitectura de una Apis Rest en C.pptx
Arquitectura de una Apis  Rest en C.pptxArquitectura de una Apis  Rest en C.pptx
Arquitectura de una Apis Rest en C.pptx
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
SEVILLA Meetups29112022_sh.pptx
SEVILLA Meetups29112022_sh.pptxSEVILLA Meetups29112022_sh.pptx
SEVILLA Meetups29112022_sh.pptx
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]Microsoft Asp. Net [Asp.Net - Parte 2]
Microsoft Asp. Net [Asp.Net - Parte 2]
 
Desarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZDesarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZ
 
Api rest ful
Api rest fulApi rest ful
Api rest ful
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 

Recently uploaded

Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxmiguelmateos18
 
Cereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. CerealesCereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. Cerealescarlosjuliogermanari1
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalaciónQualityAdviceService
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdfsmendozap1
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologicaJUDITHYEMELINHUARIPA
 
Introduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptIntroduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptReYMaStERHD
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.pptjacnuevarisaralda22
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5juanjoelaytegonzales2
 
semana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptsemana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptKelinnRiveraa
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfalfredoivan1
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfRonaldLozano11
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxfranklingerardoloma
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALEdwinC23
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potableFabricioMogroMantill
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGUROalejandrocrisostomo2
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfGabrielCayampiGutier
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...WeslinDarguinHernand
 

Recently uploaded (20)

Trazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptxTrazos paileros para realizar trazos, cortes y calculos.pptx
Trazos paileros para realizar trazos, cortes y calculos.pptx
 
Cereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. CerealesCereales tecnología de los alimentos. Cereales
Cereales tecnología de los alimentos. Cereales
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
Determinación de espacios en la instalación
Determinación de espacios en la instalaciónDeterminación de espacios en la instalación
Determinación de espacios en la instalación
 
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
[1LLF] UNIDADES, MAGNITUDES FÍSICAS Y VECTORES.pdf
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
Introduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.pptIntroduction to Satellite Communication_esp_FINAL.ppt
Introduction to Satellite Communication_esp_FINAL.ppt
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
semana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.pptsemana-08-clase-transformadores-y-norma-eep.ppt
semana-08-clase-transformadores-y-norma-eep.ppt
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptxEFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
EFICIENCIA ENERGETICA-ISO50001_INTEC_2.pptx
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
 
Presentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potablePresentación de Redes de alcantarillado y agua potable
Presentación de Redes de alcantarillado y agua potable
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 

Taller Android Party: Automatic API REST + Notificaciones PUSH

  • 1. Automatic API REST + Notificaciones PUSH 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.
  • 3. Herramientas que vamos a usar • http://androidparty.geekytheory.com/material.rar • http://www.easyphp.org/save-easyphp-devservervc9-latest.php
  • 5. ¿Qué es una API REST? API • Una API representa una interfaz de comunicación entre componentes de software.
  • 6. ¿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.
  • 7. ¿Qué es una API REST? Cada recurso es accesible a través de una única URI. URIs
  • 8. ¿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
  • 9. ¿Qué es una API REST? • GET Pedir información a un recurso. • POST Create: Orden para insertar información. Update: Modificar información. • PUT Create: Orden para insertar información. Update: Modificar información. • DELETE Eliminar información del servidor. Operadores API REST
  • 10. ¿Qué es una API REST? JSON Formatos de salida XML
  • 11. ¿Qué es una API REST? Ejemplos de APIs
  • 12. Android y APIs Necesidad • Base de datos externa. • Interacción de datos entre servidor y cliente. • Aplicaciones multiplataforma
  • 13. 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
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17. 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
  • 18. 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?
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. Ejemplo de uso: Log In http://tudominio.com/AutomaticaApiRest
  • 23. Ejemplo de uso: Panel de Control
  • 24. 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.
  • 25. 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.
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. 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":"u0160tu0161olkovo","Name":"u 0160tu0161olkovo","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"]}
  • 30. 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.
  • 31. Ejemplo de uso: Aplicación Cliente - Java getJSON • Obtiene un JSON a través de un enlace dado
  • 32. 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
  • 33. Ejemplo de uso: Aplicación Cliente - Java setData
  • 34. Ejemplo de uso: Aplicación Cliente - Java Ejemplo 1: Obtención de un dato
  • 35. Ejemplo de uso: Aplicación Cliente - Java Ejemplo 2: Inserción de datos
  • 36. Ejemplo de uso: Aplicación Cliente - Java Ejemplo 3: Código de errores [Invalid Parameters]
  • 37. Ejemplo de uso: Aplicación Cliente - Java Ejemplo 4: Código de errores [Unauthorized] Campo privada: CountryCode
  • 38. 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.
  • 39. 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
  • 40. 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 alejandro@geekytheory.com
  • 42. Ecosistema 1. El dispositivo Android envía el ID de aplicación de GCM. 2. El servicio GCM devuelve un Id de registro único por aplicación y dispositivo. 3. Enviamos este id a nuestra aplicación de servidor. 4. Almacenamos el id en la base de datos externa. 5. Si queremos enviar una notificación, obtenemos el id de la base de datos y enviamos el mensaje a GCM. 6. GCM enviará el mensaje a nuestra aplicación.
  • 44. Pasos a seguir 1. Registrarse en Google Cloud Messaging (GCM) desde Google API Console y obtener el Sender ID y la API key. 2. Crear una base de datos donde almacenaremos los ids de los usuarios. 3. Instala Automatic Api Rest (Opcional) y apuntar a la base de datos creada. 4. Crear una aplicación de servidor donde este a la escucha de ordenes para enviar notificaciones PUSH. 5. Crear una aplicación de cliente (Android) para obtener los Ids y almacenarlas en la base de datos y poder enviar notificaciones.
  • 45. Obtener Sender ID y API Key 1. https://code.google.com/apis/console
  • 46. Obtener Sender ID y API Key 2. Obtener Sender ID:
  • 47. Obtener Sender ID y API Key 3. Activar API
  • 48. Obtener Sender ID y API Key 4. Activar Google Cloud Messaging for Android
  • 49. Obtener Sender ID y API Key 5. Ir a Credenciales
  • 50. Obtener Sender ID y API Key 6. Generar API Key
  • 51. Creación de una base de datos externa
  • 53. Crear una aplicación de servidor para enviar Notificaciones sendNotification.php
  • 64. Referencias • Tutorial sobre Notificaciones PUSH • http://androidexample.com/Android_Push_Notifications_using_Google_Cloud_Messaging_GCM/index.php?view= article_discription&aid=119&aaid=139 • Serie de tutoriales sobre JSON • http://geekytheory.com/category/geeky-theory-2/tutoriales-2/programacion-web/json/ • Tutorial sobre Automatic Api Rest • http://geekytheory.com/automatic-api-rest/ • Serie de tutoriales sobre JAVA – PHP –MYSQL • http://geekytheory.com/category/java-php-mysql/ • Tutoriales Sobre PHP & MySQL • http://geekytheory.com/category/geeky-theory-2/tutoriales-2/programacion-web/php-mysql/