un listado de trabajos Crear un nuevo trabajo Actualiza masivamente los trabajos Borra todos los trabajos /jobs/24 Devuelve un trabajo específico Method not allowed (405) Actualiza un trabajo concreto Borra un trabajo específico
API navegable a través links incluidos en sus recursos Atributos: • “rel”: relación de ese link con el resource • “href”: URL única que define el resource
tablas a modelo de datos para tu aplicación Nada impide que crees nuevos Resources agrupando, pensar eso es un Anti patrón Y recuerda siempre, la API no forma parte de tu dominio
Diseña modelos de entidad 4. Diseña pensando en servicios Domain Driven Design for RESTful Jim Webber https: //yow.eventer.com/yow-2011-1004/domain-driven-design-for-restful-systems-by-jim-webber-1047
Ajustes de conexión según si estamos en WiFi, 3G, 4G: ◦ Calidad de las imágenes. Solicitar resoluciones, formatos al API ◦ Descarga de datos pesados sólo en WiFi. Ajustes de aplicación ◦ Usa datos en caché siempre que puedas: ▪ Cache-control ▪ ETag • Usa siempre GZIP, reduce hasta un 70%
• Enviar errores a Crashlytics o Analytics para analizarlo. ¿fallos de backend? • Mensajes informativos, intenta recoger feedback del usuario ¿hay algo incorrecto? • Payload con mensaje de error: localized message, validar fields • No reinventar la rueda con los códigos de error
espera: nunca más de 10 seg • Feedback de loading o fallo. Evitar el loading infinito Evitar Timeout de trabajos pesados en backend • Peticiones con ticket. Token que nos indica si una acción se ha completado
reintento UI ◦ Respetar la transaccionalidad de las acciones. Rollback de las acciones y comprobar status • Cola de reintentos en segundo plano. Diferenciar acciones que no requieren más interacción de usuario. • Batch de acciones
app en modo avión (sin conexión) Caché de los datos más usados. Equilibrio entre el modelo de negocio en la app y directa del backend Persistir todos los datos posibles de la App Sincronización del uso offline. Colas de sincronización
documentación • Parseo de respuestas y gestión de errores • El API aún no está desarrollada (mocks) • “Manual testing” • Versionado y mantenimiento de APIs • Seguridad de las peticiones
to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection” swagger.io
Crear peticiones de forma simple y reproducibles • Documentar llamadas y exportarlas • Trabajar con distintos entornos staging y pro • Utilizar helper de autenticación • Crear script de pruebas • En definitiva, un Sandbox de pruebas
una API • Adelantar trabajo y definir JSON al equipo de Backend • Pruebas en local sin necesidad de conexión de red. Mock server integrado. • Y los más importante… TESTING
respuestas RecorderRequest. Similar al verify podemos comprobar el orden y si se hacen las request correctas. Dispatcher. Crear un pequeño dispatcher para dar lógica a los test.