API móviles: ¿es mejor devolver un JSON grande o usar varias solicitudes?

En una prueba reciente, mi teléfono pudo descargar a 2172 kbps y cargar a 398 kbps, pero tuvo un tiempo de ida y vuelta de 3414 ms.

Eso coincide con mi experiencia con las solicitudes móviles en general; es probable que la latencia sea el factor dominante cuando se intenta entregar datos de manera eficiente a un dispositivo. Las preocupaciones secundarias incluyen el consumo de energía de mantener una radio activa con solicitudes frecuentes o la alta tasa de pérdida de la red. El ancho de banda disponible es limitado, pero creo que suele ser una preocupación menos importante.

Consideremos lo que ese tipo de número podría significar. Si hice un par de solicitudes secuenciales que requieren un ancho de banda insignificante, mi teléfono necesitaría esperar alrededor de 6.8 segundos para finalizar. En ese tiempo, podría haber enviado una sola solicitud y descargado al menos 927kB de datos (2172kbps para 3414ms).
Si solo nos preocupa el tiempo de tránsito, no voy a considerar una carga útil “grande” hasta que sea de al menos 1 mB.
Siendo realistas, también quiero asegurarme de que la solicitud finalice y contar con que la red permanezca disponible durante casi 7 segundos podría ser un problema, por lo que podría tratar de dividir esa carga útil en múltiples solicitudes simultáneas que podrían volverse a intentar individualmente o permitir una descarga parcialmente completa para ser reanudado

Dependiendo de los usuarios, esta API está sirviendo al plan de datos del usuario final también podría ser una preocupación. Algunos usuarios pagan por kb, algunos tienen límites mensuales, de cualquier manera no quiero enviar demasiados datos, pero eso es un problema independientemente de si uso una solicitud grande o muchas más pequeñas.

Del mismo modo, quiero diseñar una API que no requiera (o aliente) encuestas u otra comunicación frecuente o de lo contrario los clientes que consuman esta API probablemente mantendrán activas las radios de sus dispositivos todo el tiempo, lo que puede ser una pérdida significativa de energía.

Finalmente, generalmente prefiero las solicitudes monolíticas a muchas solicitudes pequeñas porque eso facilita la definición de cada solicitud como una transacción que se aplica por completo o se revierte. De esa forma, mis clientes no se encuentran con un estado en el que algunas de sus muchas solicitudes pequeñas tuvieron éxito mientras que otras fallaron y ahora tienen una copia local inconsistente de los datos que mi API proporcionó.
Por ejemplo, es mejor para las relaciones de carga lateral que hacer una solicitud para cada tipo de recurso y terminar con una vista más reciente de los objetos principales que sus hijos.

Querrá usar ambos, dependiendo de la situación y los datos con los que está trabajando.

Debe implementar ambos y dejar que el desarrollador elija cuál usar según sus necesidades. Algunos desarrolladores prefieren trabajar con múltiples solicitudes en aplicaciones que no exigen mostrar mucha información al usuario al mismo tiempo.

Pero, por ejemplo, si está desarrollando un cliente de Twitter (o algo similar), desea mostrar tantos tweets nuevos como sea posible para que el usuario pueda leerlos todos.

Conclusión: Cree 2 tipos de solicitud, una para un JSON grande y la otra, para solicitudes múltiples, JSON más pequeño.

More Interesting

Cómo encontrar un desarrollador de aplicaciones de la India para asociarse con una idea de aplicación en la que estoy trabajando

Cómo practicar con un tutor en inglés aplicaciones móviles Ninjas

¿Crees que crear aplicaciones a través de React será tan fácil como crear aplicaciones nativas?

En su opinión, ¿prevé una superposición creciente entre ciberseguridad y movilidad? ¿BYOD e IoT continuarán creciendo? ¿Qué tipo de soluciones cree que deben desarrollarse para los problemas en el futuro?

¿Qué es la tecnología PhoneGap? ¿Cómo funciona en el desarrollo de aplicaciones móviles?

¿Cuál es una buena empresa de desarrollo de aplicaciones móviles (tercerizada) específicamente para aplicaciones de chat?

En el futuro, ¿podría ser posible construir su propia aplicación escribiendo sus propios comportamientos en un lenguaje sencillo sin contratar desarrolladores?

¿Debo comprar una Macbook Pro de 13 pulgadas para aplicaciones y desarrollo web como mi uso principal? ¿Cómo es la longevidad de esta computadora portátil?

¿Cuál es la mejor tecnología para crear una aplicación móvil multiplataforma para un carrito de compras: Ionic, React Native o Xamarin?

¿Por qué no ha habido una persona o grupo que baje sus tarifas para aplicaciones simples?

¿Cuál es la mejor manera de hacer una aplicación multiplataforma iOS / Android / UWP?

¿Cuál es la mejor red publicitaria para anuncios nativos de aplicaciones móviles?

¿Qué lenguaje de programación es el mejor para el desarrollo web, el desarrollo de software y el desarrollo de aplicaciones móviles?

¿Cuánto cuesta construir una aplicación de video chat como Azar?

¿Por qué cuestan tanto hacer aplicaciones de teléfono?