¿Cuáles son los problemas con las API actuales en este momento?

Algunos problemas además de lo que Joseph ya dijo, aunque es más esotérico:

  • Falta de estabilidad, especialmente. para API web. Tal vez me han estropeado las API de Windows de Microsoft en los años 90, pero la razón por la que se llaman interfaces es porque se supone que deben ser consistentes y confiables. Facebook despreciando la mitad de su API de un año al siguiente ha causado miles de horas de desarrollador de aplicaciones en la actualización de su infraestructura solo para adaptarse a su último modelo.
  • Falta de diseño de API. La mayoría de las API parecen estar desarrolladas como ventanas contenidas a un sistema subyacente; muy pocos parecen pensar en la experiencia del desarrollador al usarlo. Claro, es más fácil codificar el adaptador a la API simplemente limpiando los datos en bruto y luego pasándolos de regreso, pero para el consumidor de API, la interfaz en sí puede ser muy inconsistente. ¿Por qué se devuelven objetos de usuario en una llamada, pero la identificación de usuario es la siguiente, y me veo obligado a ejecutar llamadas getUserById () para esas identificaciones de usuario?
  • Difícil de fallar con gracia. Cuando los datos son internos, es fácil mirar el código subyacente y descubrir por qué algunas llamadas funcionan y otras fallan. Sin embargo, una vez que los datos se abstraen en una API, hay una cadena de dependencia de las llamadas a la API, y si un enlace en esa cadena se rompe, probablemente no haya una buena forma para que el consumidor de la API recurra a algo razonable más allá de “el servicio no está disponible “. Por ejemplo, una llamada devuelve un grupo de identificaciones de usuario, una llamada convierte las identificaciones de usuario en objetos de usuario, una llamada busca perfiles de usuario de objetos de usuario, una llamada busca una ubicación desde una cadena (a través del perfil de usuario); cualquier falla en el camino generará un error para el usuario.

  • La documentación parece variar mucho en profundidad / calidad
  • El código de muestra o la biblioteca del cliente generalmente no está disponible
  • Los comentarios sobre la limitación o los umbrales no son transparentes: también debe haber una API para verificar esto.
  • Todos tienen un proceso de autenticación de inicio de sesión único diferente: ¿podemos estandarizar uno?
  • El código de muestra siempre está en el idioma preferido incorrecto. (¿Dónde está la versión de Python? ¡Doh!)
  • ¿Por qué la documentación de la API no puede integrarse más estrechamente en mi entorno de desarrollo? (Presione F1 para buscar, etc.)
  • La mayoría de las API no tienen consolas de prueba / solicitud, eso realmente ayudaría a jugar con la API antes de tener que escribir una sola línea de código. Ver facebook (dado que ahora está en desuso): http://developers.facebook.com/d

TL; DR: demasiado jabón, no hay suficiente descanso. Demasiado XML, no suficiente JSON.

SOAP ( http://en.wikipedia.org/wiki/SOAP ) se creó con la premisa de que necesitábamos un protocolo muy robusto que explicara exactamente qué solicitudes deberían ser y cómo deberían ser los resultados. WSDL ( http://en.wikipedia.org/wiki/WSDL ) fue el pico de este enfoque, una arquitectura completa en torno a la definición de funciones y clases para la comunicación en la web. Ambos usan XML, que encaja con lo detallados que son.

REST ( http://en.wikipedia.org/wiki/REST ) y JSON se basan en la idea de que debería enviar la cantidad mínima de datos a través de la red. Para hacer esto, descartan las arquitecturas integrales de SOAP / WSDL / XML y, en cambio, minimizan (lo que también significa especializarse) los detalles de cada transacción.

Permítanme demostrar con un ejemplo hipotético:

SOAP / XML (sin WSDL; con WSDL, sería mucho peor):
Enviar

  POST / InStock HTTP / 1.1

 
 
   
             
        IBM 
   
   
 

Recibir

  
 
   
     
        34.5 
     
   
 

REST / JSON :
Enviar
GET /InStock/GetStockPrice?StockName=IBM

Recibir
{ "price": "34.5" }

La teoría detrás de SOAP y XML es que su verbosidad los hace más legibles / utilizables / comprensibles. Creo que la práctica ha demostrado que esta teoría es falsa. Todos los desarrolladores necesitarán una guía del usuario: el servicio web SOAP promedio no es mágicamente comprensible mirando las transacciones de ejemplo. Peor aún, diferentes implementaciones de los sobres SOAP pueden ser manejadas de manera diferente por diferentes servidores web. Recuerdo haber intentado implementar una conexión a una configuración WSDL, conectarme a un servidor IIS desde un servidor Linux, y terminé teniendo que crear manualmente todos solicita y analiza individualmente las respuestas, lo que completa derrota el propósito de WSDL.

Entonces, si de todos modos necesita documentación, simplemente haga las solicitudes de la manera más pequeña, simple y posible (como lo hacen REST y JSON), e invierta su tiempo (como compañía) en una impresionante documentación y un código de muestra. Esto tiende a ser la práctica de nuevas empresas de nueva creación en la actualidad, por ejemplo, Recurly (producto) ( http://www.recurly.com/ ) lanzado con un excelente y robusto código de muestra para una tonelada de idiomas diferentes, incluido un número de bibliotecas completas.

Adam Schepis pregunta si quizás hay lugares donde REST no es la arquitectura correcta para las solicitudes. Ciertamente, hay algunos casos en los que la información que debe enviarse al servidor es más que un puñado de cadenas de texto cortas, pero incluso en ese caso, argumentaría a favor de hacer una POST con un archivo JSON sobre el uso de SOAP; Simplemente no puedo ver dónde son necesarios todos los detalles en SOAP.

Un comentario final: he sido quizás demasiado negativo en XML aquí. A diferencia de SOAP, para el que no tengo uso, encuentro que XML es un formato de archivo útil en muchos casos. Los lenguajes XSL (en particular XSLT, XPATH y XSL-FO) son increíblemente potentes y los utilizamos ampliamente en BuildFax. De hecho, nuestro servicio web principal escupe XML, que convertimos en HTML con XSLT, y que también tenemos muchos clientes con XPATH.

Mi queja XML no es tanto con XML sino con la forma en que la mayoría de las corporaciones y desarrolladores comunes parecen pensar que es la única solución para los servicios web. Dado que todos terminamos pagando por el ancho de banda (tanto en el pago real como en el tiempo de espera), JSON debería ser el valor predeterminado y XML elegido solo cuando sea más ventajoso para los usuarios.

More Interesting

¿Existe algún software que pueda usar para tomar reservas de mis clases en línea?

¿Cómo se construyen los sistemas de software complejos?

Cómo aprender el desarrollo impulsado por el comportamiento (BDD)

¿Por qué podría uno elegir Java para un nuevo proyecto?

¿Pakistán tiene compañías de software?

¿Qué podría haber sido una alternativa a los "archivos" tal como los conocemos hoy?

Sistemas operativos: ¿cuál es la diferencia entre un sistema operativo original y uno pirateado? ¿Por qué debería uno ir por el original, beneficios como tal?

¿A los programadores les encanta la programación y no les parece aburrida?

¿Qué es Android Runtime?

¿Cómo memorizar todo el patrón de diseño? ¿Cómo puedes entender el patrón de diseño del proyecto de código abierto de alguien?

¿Qué empresa fabrica el mejor software para animación?

¿Con qué frecuencia los programadores de tiempo completo se encuentran con un error que tarda un tiempo en solucionarse?

Si somos un equipo independiente de ingenieros de software de alta gama / informáticos especializados en computación en la nube y aplicaciones compatibles con HIPAA, ¿cuál debería ser nuestra tarifa fuera de eLance / oDesk si nuestra tarifa en eLance / oDesk es de $ 55 / hora y puede ser muy selectiva sobre el trabajos en los que ofertamos y rara vez regateamos?

¿Qué compañía ofrece un servicio de software de nómina fácil de usar en India?

¿Cuál es el procedimiento para aplicar a las compañías de software mejor clasificadas como Google, Microsoft, Facebook, etc., si soy un graduado de ECE?