Api rest client en Android

Post on 16-Apr-2017

314 views 3 download

Transcript of Api rest client en Android

CONECTA TU APP ANDROID CON SERVICIOS DE INTERNET

Toni Martínez

@toniousli

/in/tonimartinezcarballo

tonimc

FREELANCE DEVELOPER

tonimc@gmail.com

SÓLO UNA VISIÓN PERSONAL

SOFTWARE IS NOT ABOUT FRAMEWORKS

AGENDA▸ ¿Qué cosas son importantes en una app?

▸ Servicios de internet

▸ REST

▸ Librerías

▸ Tools

▸ Diseñar nuestra app teniendo en cuenta todo esto

▸ Proceso propio al desarrollar una app que se conecta a una API

▸ Show me the code!

▸ Referencias y links de interés

¿QUÉ ES IMPORTANTE EN UNA APP?

EXPERIENCIA DE USUARIO

APIDE NUESTRA PARTE SÓLO PODEMOS LIDIAR CON EL CLIENTE

MANEJO DE LA UI- BUEN MANEJO DEL THREAD DE UI - EVITAR FUGAS DE MEMORIA (MEMORY LEAKS) - EVITAR APP CRASHES

TEXTO

SERVICIOS DE INTERNET

+90% APPS USAN INTERNET¿ALGUIEN ENTIENDE UN

SMARTPHONE SIN INTERNET?

REST

▸ Definida en el año 2000 como tesis doctoral por Roy Fielding

▸ Interfaz entre sistemas que utilice directamente HTTP para obtener datos o indicar la ejecución de operaciones sobre los datos, en cualquier formato (XML, JSON, etc).

▸ No son necesarias abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes (SOAP)

Fuente: https://es.wikipedia.org/wiki/Representational_State_Transfer

REST

▸ Verbos HTTP

▸ GET : Read

▸ POST : Insert

▸ PUT : Update

▸ DELETE : Remove

▸ Hypermedia HATEOS

▸ Énfasis en el recurso y no en la operación

▸ No usar verbos:

▸ /getUsers ——> GET /users

▸ /addUser ——> POST /users

▸ Usar nombres en plural

▸ Ejemplo: GET /users/13

REST

Fuente: http://petstore.swagger.io/

REST: CONSIDERACIONES A TENER EN CUENTA

▸ Velocidad

▸ Errores de red

▸ Offline first

▸ Sincronización

▸ Seguridad:

▸ HTTPS

▸ Token/oAuth…

LIBRERÍAS: CLIENTE HTTP

▸ Apache HttpClient (Eliminada ya en SDK 23 - Android 6.0)

▸ OkHttp

▸ Volley (Google)

▸ RetroFit: Librería específica para desarrollar clientes REST

RETROFIT

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

Retrofit 1.9 a 2.0: https://futurestud.io/blog/retrofit-2-upgrade-guide-from-1-9

- Url dinámicas

- OkHttp integrado

- Interceptors: https://github.com/square/okhttp/wiki/Interceptors

- Request Execution

- Request Exception

- RX Java

RETROFIT: CREACIÓN CLIENTE DEL SERVICIO

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: OBTENIENDO DATOS

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: TOKEN AUTHENTICATION

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: LLAMADAS SÍNCRONAS Y ASÍNCRONAS

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: QUERY STRING

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: ENVÍO DE OBJETOS EN BODY

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: CUSTOM HEADERS

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

RETROFIT: DEBUG

Fuente: https://futurestud.io/blog/retrofit-getting-started-and-android-client

TOOLS: POSTMAN

IMPLEMENTACIÓN RÁPIDA DE API RESTFUL PARA DEMO

HTTPS://USERS-GDGOURENSE.FIREBASEIO.COM/

Como funciona Firebase como API Rest: https://www.firebase.com/docs/rest/api/

DISEÑAR NUESTRA APP PENSANDO EN TODO ESTO

ACTIVITY

VIEW

PRESENTER

USE CASE

USE CASE

USE CASE

DOMAIN

REPOSITORIO

REPOSITORIO

DATASOURCE BBDD

DATASOURCE REST

DATASOURCE FILES

Clean Architecture

MAPPER

MAPPER

MAPPER

Hilo propioHilo UI

PATRÓN REPOSITORIO

Use a repository to separate the logic that retrieves the data and maps it to the entity

model from the business logic that acts on the model. The business logic should be agnostic

to the type of data that comprises the data source layer. For example, the data source layer

can be a database, a SharePoint list, or a Web service.

Fuente: https://msdn.microsoft.com/en-us/library/ff649690.aspx

TEXTO

PROCESO PROPIO DE APP QUE SE CONECTA A API

▸ Dos caminos

▸ Empezamos por la interfaz??

▸ Creación a partir de definición de servicio de datos dummy

▸ Empezamos por la conexión al servicio?

▸ Unit testing

TEXTO

UNIT TESTING: EMULANDO SERVICIO - MOCK WEBSERVER

TEXTO

UNIT TESTING

SHOW ME THE CODE !!!

https://github.com/tonimc/android-clean-api-client

http://es.slideshare.net/tonimc/api-rest-client-en-android

TEXTO

REFERENCIAS

▸ https://futurestud.io/blog/retrofit-getting-started-and-android-client

▸ https://github.com/PaNaVTEC/Clean-Contacts

▸ http://es.slideshare.net/jmpereirag/limpiando-espero-la-arquitectura-que-yo-quiero

▸ http://es.slideshare.net/flipper83/presistiendo-que-es-gerundio-my-storing-story

▸ http://es.slideshare.net/PedroVicenteGmezSnch/effective-android-ui-spanish

▸ http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/

GRACIAS!!