Una API web es una interfaz de programación de aplicaciones (API) para un servidor web o un navegador web . Como concepto de desarrollo web , puede estar relacionada con el lado del cliente de una aplicación web (incluidos los marcos web que se utilicen). Una API web del lado del servidor consta de uno o más puntos finales expuestos públicamente a un sistema de mensajes de solicitud-respuesta definido , expresados normalmente en JSON o XML por medio de un servidor web basado en HTTP . Una API de servidor (SAPI) no se considera una API web del lado del servidor, a menos que sea accesible públicamente por una aplicación web remota.
Una API web del lado del cliente es una interfaz programática para ampliar la funcionalidad dentro de un navegador web u otro cliente HTTP. Originalmente, estas se presentaban comúnmente en forma de extensiones nativas del navegador, pero la mayoría de las más nuevas apuntan a enlaces de JavaScript estandarizados .
La Fundación Mozilla creó su especificación WebAPI, que está diseñada para ayudar a reemplazar las aplicaciones móviles nativas con aplicaciones HTML5 . [1] [2]
Google creó su arquitectura Native Client , diseñada para ayudar a reemplazar complementos nativos inseguros por extensiones y aplicaciones seguras nativas en entornos aislados . También la han hecho portátil empleando un compilador AOT LLVM modificado .
Una API web del lado del servidor consta de uno o más puntos finales expuestos públicamente a un sistema de mensajes de solicitud-respuesta definido , generalmente expresado en JSON o XML . La API web se expone más comúnmente por medio de un servidor web basado en HTTP .
Los mashups son aplicaciones web que combinan el uso de múltiples API web del lado del servidor. [3] [4] [5] Los webhooks son API web del lado del servidor que toman la entrada como un Identificador uniforme de recursos (URI) que está diseñado para usarse como una tubería con nombre remota o un tipo de devolución de llamada de modo que el servidor actúe como un cliente para desreferenciar el URI proporcionado y activar un evento en otro servidor que maneja este evento, proporcionando así un tipo de IPC de igual a igual.
Los puntos finales son aspectos importantes de la interacción con las API web del lado del servidor, ya que especifican dónde se encuentran los recursos a los que puede acceder el software de terceros. Por lo general, el acceso se realiza a través de una URL a la que se envían las solicitudes HTTP y desde la que se espera la respuesta. Las API web pueden ser públicas o privadas, y la última de ellas requiere un token de acceso . [6]
Los puntos finales deben ser estáticos, de lo contrario no se puede garantizar el correcto funcionamiento del software que interactúa con ellos. Si cambia la ubicación de un recurso (y con ello el punto final), el software escrito anteriormente dejará de funcionar, ya que el recurso requerido ya no se puede encontrar en el mismo lugar. Como los proveedores de API aún quieren actualizar sus API web, muchos han introducido un sistema de control de versiones en la URI que apunta a un punto final.
Las API web de la Web 2.0 suelen utilizar interacciones basadas en máquinas, como REST y SOAP . Las API web RESTful utilizan métodos HTTP para acceder a los recursos a través de parámetros codificados en URL y utilizan JSON o XML para transmitir datos. Por el contrario, los protocolos SOAP están estandarizados por el W3C y exigen el uso de XML como formato de carga útil, normalmente sobre HTTP . Además, las API web basadas en SOAP utilizan la validación XML para garantizar la integridad estructural de los mensajes, aprovechando los esquemas XML provistos con documentos WSDL . Un documento WSDL define con precisión los mensajes XML y los enlaces de transporte de un servicio web .
Las API web del lado del servidor son interfaces para que el mundo exterior interactúe con la lógica empresarial. Para muchas empresas, esta lógica empresarial interna y la propiedad intelectual asociada a ella son lo que las distingue de otras empresas y, potencialmente, lo que les da una ventaja competitiva. No quieren que esta información quede expuesta. Sin embargo, para proporcionar una API web de alta calidad, es necesario que haya un nivel suficiente de documentación. Un proveedor de API que no solo proporciona documentación, sino que también incluye enlaces a ella en sus mensajes de error es Twilio . [7]
Sin embargo, ahora existen directorios de API web del lado del servidor documentadas y populares. [8]
La cantidad de API web disponibles ha crecido de manera constante en los últimos años, a medida que las empresas se dan cuenta de las oportunidades de crecimiento asociadas con la ejecución de una plataforma abierta con la que cualquier desarrollador puede interactuar. ProgrammableWeb realiza un seguimiento de más de 24 000 API web que estaban disponibles en 2022, en comparación con las 105 de 2005.
Las API web se han vuelto omnipresentes. Hay pocas aplicaciones/servicios de software importantes que no ofrezcan algún tipo de API web. Una de las formas más comunes de interactuar con estas API web es mediante la incorporación de recursos externos, como tweets, comentarios de Facebook, videos de YouTube, etc. De hecho, hay empresas muy exitosas, como Disqus , cuyo servicio principal es proporcionar herramientas integrables, como un sistema de comentarios rico en funciones. [9] Cualquier sitio web de los 100 mejores sitios web de Internet clasificados por Alexa utiliza API y/o proporciona sus propias API, lo que es un indicador muy claro de la escala prodigiosa y el impacto de las API web en su conjunto. [10]
A medida que ha aumentado la cantidad de API web disponibles, se han desarrollado herramientas de código abierto para proporcionar una búsqueda y un descubrimiento más sofisticados. APIs.json proporciona una descripción legible por máquina de una API y sus operaciones, y el proyecto relacionado APIs.io ofrece una lista pública de API con capacidad de búsqueda basada en el formato de metadatos APIs.json. [11] [12]
Muchas empresas y organizaciones dependen en gran medida de su infraestructura de API web para brindar servicios a sus principales clientes comerciales. En 2014, Netflix recibió alrededor de 5 mil millones de solicitudes de API, la mayoría de ellas dentro de su API privada. [13]
Muchos gobiernos recopilan una gran cantidad de datos y algunos gobiernos están permitiendo el acceso a ellos. Las interfaces a través de las cuales se puede acceder a estos datos son las API web. Las API web permiten que cualquier desarrollador pueda acceder de forma cómoda a datos como "presupuesto, obras públicas, delitos, asuntos legales y otros datos de agencias" [14] .
Un ejemplo de una API web popular es la API Astronomy Picture of the Day , operada por la agencia espacial estadounidense NASA . Es una API del lado del servidor que se utiliza para recuperar fotografías del espacio u otras imágenes de interés para los astrónomos , así como metadatos sobre las imágenes.
Según la documentación de la API, [15] la API tiene un punto final:
https://api.nasa.gov/planetary/apod
La documentación indica que este punto final acepta solicitudes GET . Requiere una pieza de información del usuario, una clave API , y acepta varias otras piezas de información opcionales. Dichas piezas de información se conocen como parámetros . Los parámetros para esta API se escriben en un formato conocido como cadena de consulta , que está separada por un carácter de signo de interrogación?
( ) desde el punto final. Un ampersand ( &
) separa los parámetros en la cadena de consulta entre sí. Juntos, el punto final y la cadena de consulta forman una URL que determina cómo responderá la API. Esta URL también se conoce como consulta o llamada API .
En el siguiente ejemplo, se transmiten (o pasan ) dos parámetros a la API a través de la cadena de consulta. El primero es la clave API requerida y el segundo es un parámetro opcional: la fecha de la fotografía solicitada.
https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=1996-12-03
Al visitar la URL anterior en un navegador web, se iniciará una solicitud GET, que llamará a la API y mostrará al usuario un resultado, conocido como valor de retorno o como return . Esta API devuelve JSON , un tipo de formato de datos destinado a ser comprendido por computadoras, pero que también es bastante fácil de leer para un humano. En este caso, el JSON contiene información sobre una fotografía de una estrella enana blanca :
{ "date" : "1996-12-03" , "explanation" : "Como una mariposa, una estrella enana blanca comienza su vida desprendiéndose de un capullo que la envolvía. En esta analogía, sin embargo, el Sol sería una oruga y la capa de gas expulsada se convertiría en la más bonita de todas. El capullo de arriba, la nebulosa planetaria designada NGC 2440, contiene una de las estrellas enanas blancas más calientes que se conocen. La enana blanca puede verse como el punto brillante cerca del centro de la foto. Nuestro Sol acabará convirtiéndose en una "mariposa enana blanca", pero no hasta dentro de 5 mil millones de años. La imagen en falso color de arriba entró recientemente en el dominio público y fue procesada posteriormente por F. Hamilton.\r" , "hdurl" : "https://apod.nasa.gov/apod/image/9612/ngc2440_hst2_big.jpg" , "media_type" : "image" , "service_version" : "v1" , "title" : "Capullo de una nueva enana blanca\r\nCrédito:" , "url" : "https://apod.nasa.gov/apod/image/9612/ngc2440_hst2.jpg" }
La API anterior se ha reformateado para que los nombres de los elementos de datos JSON, conocidos como claves , aparezcan al comienzo de cada línea. La última de estas claves, denominada url
, indica una URL que apunta a una fotografía:
https://apod.nasa.gov/apod/image/9612/ngc2440_hst2.jpg
Siguiendo la URL anterior, un usuario de un navegador web verá esta foto:
Aunque un usuario final puede llamar a esta API con un navegador web (como en este ejemplo), está pensada para que la llame automáticamente un software o un programador informático mientras escribe el software. El JSON está pensado para que lo analice un programa informático, que extraerá la URL de la fotografía y los demás metadatos. La foto resultante podría incrustarse en un sitio web, enviarse automáticamente por mensaje de texto o utilizarse para cualquier otro fin previsto por un desarrollador de software.
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )