¿Cuáles son las desventajas de las aplicaciones web centradas en API?

Creo que el diseño centrado en API es una gran cosa. Actualmente estoy construyendo uno para un inicio que luego puede admitir muchas interfaces y / o dispositivos diferentes.

Sin embargo, una “desventaja” (pero reparable) sería: es fácil escribir una API mal diseñada . Hay tantas implementaciones diferentes de API disponibles, tantas formas diferentes de hacer las cosas. Es difícil saber qué es realmente “correcto”.

Una buena API toma un poco de tiempo para pensar y planificar. Hay muchas decisiones que tomar que probablemente sean específicas para su aplicación. Realmente vale la pena hacerlo correctamente desde el principio, no solo hackearlo juntos.

La razón por la cual las API RESTful son tan inconsistentes en los diferentes servicios es porque REST no es un estándar, no es un protocolo. Es un estilo arquitectónico. Algunas cosas a tener en cuenta para su API serían; qué verbos HTTP admitir, qué estructura de URI seguir, cómo devolver mensajes de error de manera consistente, cómo manejar la selección parcial, el control de versiones, la autenticación, la paginación, etc. y así sucesivamente. debatido a menudo), pero hay muchas maneras que no son tan geniales!

Lo más importante de todo, su API debe ser consistente en todo momento. Se convierten en un dolor de bola masivo muy rápido si no.

Como nota al margen, hay algunos videos excelentes en YouTube de Apigee sobre este tema. Sus videos me parecieron útiles para comprender algunas de las decisiones que tomar. Sin mencionar algunas excelentes explicaciones / debates sobre Stack Overflow.

Para cualquier persona interesada, recomiendo este video para obtener más información:

El rendimiento y la disponibilidad son los dos mayores riesgos para las aplicaciones centradas en API.

Hay un par de desafíos de rendimiento diferentes. El desafío más obvio es que el rendimiento de sus aplicaciones depende del de las API que utiliza si accede a ellas en tiempo de ejecución.

El desafío menos obvio es el costo de rendimiento de traducir las entradas y salidas a esas API en lo que su aplicación crea o consume, respectivamente. Agregar, dividir y transformar las cargas útiles de API lleva tiempo, especialmente cuando necesita ensamblar respuestas de API que requieren llamadas secuenciales a la API, como cuando las respuestas posteriores requieren llamadas de API con entradas de respuestas anteriores.

Similar al rendimiento, la disponibilidad de su aplicación depende de la disponibilidad de las API que utiliza, especialmente cuando tiene dependencias en tiempo real.

Ambos riesgos pueden mitigarse, en todo o en parte, eliminando las dependencias de API en tiempo real cuando sea posible. Por ejemplo, puede crear su propia copia de los datos proporcionados por las API que utiliza y actualizar periódicamente los datos. Puede poner en cola sus escrituras en las API cuando no sea necesario un resultado inmediato de esa escritura.

Su capacidad de emplear estas tácticas se verá facilitada (o no) por los protocolos y los términos de servicio de los proveedores de API con los que trabaja. Por ejemplo, Facebook es bastante generoso al permitirle almacenar en caché los datos de cualquier usuario que le haya otorgado acceso a sus datos y no los haya revocado. También proporcionan API de devolución de llamada para recibir notificaciones cuando se actualizan los datos del usuario.

Vale la pena señalar que necesita ejecutar su propia infraestructura de servidor para habilitar este nivel de robustez. Esto significa que no puede simplemente crear esa aplicación móvil que se comunica con las API directamente sin costos de servidor para usted.

El desarrollo centrado en API tiene muchas ventajas. Hay algunos conceptos erróneos sobre el desarrollo centrado en API.

Uno de ellos es que el desarrollo centrado en API es más lento. No lo es. El desarrollo centrado en la API le permite desacoplar el desarrollo de la interfaz de usuario del desarrollo del software central, lo que puede hacer que el desarrollo sea aún más rápido si el trabajo en equipo está involucrado. El desarrollo centrado en API también le permite integrar fácilmente otras interfaces de usuario más adelante, lo que ahorra no solo algo de tiempo, sino también mucho tiempo, a menudo semanas y meses.

Otro concepto erróneo es que el desarrollo centrado en API es de alguna manera peligroso para el rendimiento. No lo es. Siempre y cuando sus controladores estén bien diseñados y use un marco decente centrado en API, su rendimiento puede ser al menos tan bueno, si no mejor, que el de un software diseñado no centrado en API. Recuerde que el diseño centrado en la API le permite realizar solicitudes mínimas requeridas que tienen muy poco peso consigo, ahorrando muchos recursos y tiempo de procesamiento.

Cubrí mucho más sobre el diseño centrado en API y lo que debería saberse en mi blog aquí: http://waher.net/archives/1158 y también he desarrollado un micro-framework PHP centrado en API llamado Wave Framework (disponible en http://waveframework.com/ ).

More Interesting

¿Por qué se elimina el enlace de datos bidireccional en Angular 2? Si Angular 2.0 solo admite el enlace de datos unidireccional, ¿no fue el enlace bidireccional una característica importante de Angular 1? ¿Esto implica que de alguna manera la unión bidireccional en Angular 1 no fue una característica útil?

Siendo un novato, ¿cómo comienzas a ser un ingeniero de desarrollo empresarial exitoso?

¿Cómo se protegen los sitios web de bienes raíces (Trulia, Loopnet) contra listados falsos?

Después de crear una aplicación web, ¿qué necesita para seguir actualizando?

Alguien está desarrollando una aplicación web para mí. Se han solicitado detalles de alojamiento con certificación SSL para que la aplicación se pueda cargar y probar. ¿Qué debo hacer?

¿Cuáles son las desventajas de las aplicaciones web centradas en API?

¿Deberían los desarrolladores web que estudian JavaScript y sus marcos, Node.JS, aprender WebAssembly y ES6 independientemente de estos y cuál es la conexión de estos dos con los programas anteriores?

¿Cuál es el mejor y único sitio web / aplicación web para hacer en 1 día de duración?

¿Cuáles son las similitudes y diferencias entre la informática científica de alto rendimiento y las aplicaciones web altamente escaladas?

¿Cuáles son los pros y los contras de las páginas web angulares estáticas que hablan del nivel de aplicación frente a un nivel web 'más gordo' con lógica de negocios incorporada?

¿Usaría un curso que enseñe cómo crear aplicaciones web increíbles desde cero usando Laravel, Angular, Ionic y Foundation para aplicaciones?

¿Node.js sería un marco bueno o mejor para crear una aplicación que transmita videos?

¿Qué motor de almacenamiento MySQL sería el más apropiado para una aplicación web?

¿Existen problemas de seguridad con el uso de javascript para iniciar sesión y decirle al usuario que ingresó sus datos de inicio de sesión correctamente?

Los Tutoriales máximos se basan en aplicaciones crud. Si creo que estoy bien en aplicaciones crud, ¿sobre qué tipo de aplicaciones necesito estudiar?