stringtranslate.com

API

Captura de pantalla de la documentación de la API web escrita por la NASA que demuestra el uso de APOD

Una interfaz de programación de aplicaciones (API) es una forma en que dos o más programas o componentes informáticos se comunican entre sí. Es un tipo de interfaz de software que ofrece un servicio a otras piezas de software . [1] Un documento o estándar que describe cómo construir o usar dicha conexión o interfaz se denomina especificación de API . Se dice que un sistema informático que cumple con este estándar implementa o expone una API. El término API puede referirse a la especificación o a la implementación. Mientras que la interfaz de usuario de un sistema dicta cómo interactúan sus usuarios finales con el sistema en cuestión, su API dicta cómo escribir código que aproveche las capacidades de ese sistema.

A diferencia de una interfaz de usuario, que conecta una computadora con una persona, una interfaz de programación de aplicaciones conecta computadoras o piezas de software entre sí. No está destinada a ser utilizada directamente por una persona (el usuario final ) que no sea un programador de computadoras que la incorpora al software. Una API a menudo se compone de diferentes partes que actúan como herramientas o servicios que están disponibles para el programador. Se dice que un programa o un programador que usa una de estas partes llama a esa parte de la API. Las llamadas que componen la API también se conocen como subrutinas , métodos, solicitudes o puntos finales . Una especificación de API define estas llamadas, lo que significa que explica cómo usarlas o implementarlas.

Uno de los propósitos de las API es ocultar los detalles internos de cómo funciona un sistema, exponiendo solo aquellas partes que un programador encontrará útiles y manteniendo su coherencia incluso si los detalles internos cambian más adelante. Una API puede ser personalizada para un par de sistemas en particular o puede ser un estándar compartido que permita la interoperabilidad entre muchos sistemas.

Existen API para lenguajes de programación , bibliotecas de software , sistemas operativos de computadoras y hardware de computadoras . Las API se originaron en la década de 1940, aunque el término no surgió hasta las décadas de 1960 y 1970. El uso contemporáneo del término API a menudo se refiere a las API web , [2] que permiten la comunicación entre computadoras que están unidas por Internet . Los desarrollos recientes en API han llevado al aumento de la popularidad de los microservicios , que son servicios acoplados de forma flexible a los que se accede a través de API públicas. [3]

Las API deben tener versiones . Existen dos estrategias de control de versiones comunes: [4]

Objetivo

Al crear aplicaciones, una API simplifica la programación al abstraer la implementación subyacente y exponer únicamente los objetos o acciones que necesita el desarrollador. Mientras que una interfaz gráfica para un cliente de correo electrónico puede proporcionar al usuario un botón que realiza todos los pasos para buscar y resaltar nuevos correos electrónicos, una API para la entrada y salida de archivos puede brindar al desarrollador una función que copia un archivo de una ubicación a otra sin necesidad de que el desarrollador comprenda las operaciones del sistema de archivos que ocurren detrás de escena. [5]

Historia del término

Un diagrama de 1978 que propone la expansión de la idea de la API para convertirse en una interfaz de programación general, más allá de los programas de aplicación por sí solos [6]

El término API inicialmente describía una interfaz solo para programas orientados al usuario final, conocidos como programas de aplicación . Este origen todavía se refleja en el nombre "interfaz de programación de aplicaciones". Hoy, el término es más amplio e incluye también software de utilidad e incluso interfaces de hardware . [7]

Década de 1940 y 1950

La idea de API es mucho más antigua que el término en sí. Los informáticos británicos Maurice Wilkes y David Wheeler trabajaron en una biblioteca de software modular en la década de 1940 para EDSAC , una de las primeras computadoras. Las subrutinas de esta biblioteca se almacenaban en cintas perforadas organizadas en un archivador . Este archivador también contenía lo que Wilkes y Wheeler llamaron un "catálogo de biblioteca" de notas sobre cada subrutina y cómo incorporarla a un programa. Hoy en día, un catálogo de este tipo se llamaría API (o una especificación de API o documentación de API) porque instruye a un programador sobre cómo usar (o "llamar") cada subrutina que el programador necesita. [7]

El libro de Wilkes y Wheeler de 1951, The Preparation of Programs for an Electronic Digital Computer, contiene la primera especificación API publicada. Joshua Bloch considera que Wilkes y Wheeler "inventaron latentemente" la API porque es más un concepto que se descubre que se inventa. [7]

Aunque las personas que acuñaron el término API estaban implementando software en un Univac 1108 , el objetivo de su API era hacer posibles programas independientes del hardware . [8]

Década de 1960 y 1970

El término "interfaz de programa de aplicación" (sin el sufijo -ing ) se registró por primera vez en un artículo llamado Estructuras de datos y técnicas para gráficos de computadora remotos presentado en una conferencia de AFIPS en 1968. [9] [7] Los autores de este artículo utilizan el término para describir la interacción de una aplicación (un programa de gráficos en este caso) con el resto del sistema informático. Una interfaz de aplicación consistente (que consiste en llamadas a subrutinas Fortran ) tenía como objetivo liberar al programador de lidiar con idiosincrasias del dispositivo de visualización de gráficos y proporcionar independencia de hardware si se reemplazaba la computadora o la pantalla. [8]

El término fue introducido en el campo de las bases de datos por CJ Date [10] en un artículo de 1974 llamado The Relational and Network Approaches: Comparison of the Application Programming Interface [11] . Una API se convirtió en parte del marco ANSI/SPARC para sistemas de gestión de bases de datos . Este marco trataba la interfaz de programación de aplicaciones por separado de otras interfaces, como la interfaz de consulta. Los profesionales de bases de datos en la década de 1970 observaron que estas diferentes interfaces podían combinarse; una interfaz de aplicación lo suficientemente rica también podría soportar las otras interfaces. [6]

Esta observación condujo a la creación de API que admitían todo tipo de programación, no solo la programación de aplicaciones.

Década de 1990

En 1990, el tecnólogo Carl Malamud definió la API simplemente como "un conjunto de servicios disponibles para un programador para realizar ciertas tareas" . [12]

La idea de la API se amplió nuevamente con el surgimiento de las llamadas a procedimientos remotos y las API web . A medida que las redes de computadoras se volvieron comunes en las décadas de 1970 y 1980, los programadores querían llamar a bibliotecas ubicadas no solo en sus computadoras locales sino en computadoras ubicadas en otros lugares. Estas llamadas a procedimientos remotos fueron bien soportadas por el lenguaje Java en particular. En la década de 1990, con la expansión de Internet , estándares como CORBA , COM y DCOM compitieron para convertirse en la forma más común de exponer servicios API. [13]

Década de 2000

La disertación de Roy Fielding, Estilos arquitectónicos y diseño de arquitecturas de software basadas en redes en la UC Irvine en 2000, describió la transferencia de estado representacional (REST) ​​y la idea de una "interfaz de programación de aplicaciones basada en red" que Fielding contrastó con las API tradicionales "basadas en bibliotecas". [14] Las API web XML y JSON tuvieron una adopción comercial generalizada a partir de 2000 y continúan hasta 2022. La API web es ahora el significado más común del término API. [2]

La Web Semántica propuesta por Tim Berners-Lee en 2001 incluía "API semánticas" que reformulan la API como una interfaz de datos abierta y distribuida en lugar de una interfaz de comportamiento de software. [15] Las interfaces y agentes propietarios se generalizaron más que los abiertos, pero la idea de la API como una interfaz de datos se afianzó. Debido a que las API web se utilizan ampliamente para intercambiar datos de todo tipo en línea, API se ha convertido en un término amplio que describe gran parte de la comunicación en Internet. [13] Cuando se utiliza de esta manera, el término API tiene un superposición de significado con el término protocolo de comunicación .

Uso

Bibliotecas y marcos de trabajo

La interfaz de una biblioteca de software es un tipo de API. La API describe y prescribe el "comportamiento esperado" (una especificación), mientras que la biblioteca es una "implementación real" de este conjunto de reglas.

Una sola API puede tener múltiples implementaciones (o ninguna, siendo abstracto) en forma de diferentes bibliotecas que comparten la misma interfaz de programación.

La separación de la API de su implementación puede permitir que los programas escritos en un lenguaje utilicen una biblioteca escrita en otro. Por ejemplo, debido a que Scala y Java se compilan en bytecode compatible , los desarrolladores de Scala pueden aprovechar cualquier API de Java. [16]

El uso de API puede variar según el tipo de lenguaje de programación involucrado. Una API para un lenguaje procedimental como Lua podría consistir principalmente en rutinas básicas para ejecutar código, manipular datos o manejar errores, mientras que una API para un lenguaje orientado a objetos , como Java, proporcionaría una especificación de clases y sus métodos de clase . [17] [18] La ley de Hyrum establece que “con un número suficiente de usuarios de una API, no importa lo que prometas en el contrato: todos los comportamientos observables de tu sistema dependerán de alguien”. [19] Mientras tanto, varios estudios muestran que la mayoría de las aplicaciones que utilizan una API tienden a utilizar una pequeña parte de la API. [20]

Los enlaces de lenguaje también son API. Al asignar las características y capacidades de un lenguaje a una interfaz implementada en otro lenguaje, un enlace de lenguaje permite que una biblioteca o servicio escrito en un lenguaje se use cuando se desarrolla en otro lenguaje. [ cita requerida ]

Herramientas como SWIG y F2PY, un generador de interfaces de Fortran a Python , facilitan la creación de dichas interfaces. [21]

Una API también puede estar relacionada con un marco de software : un marco puede estar basado en varias bibliotecas que implementan varias API, pero a diferencia del uso normal de una API, el acceso al comportamiento integrado en el marco se media extendiendo su contenido con nuevas clases incorporadas al marco mismo.

Además, el flujo de control general del programa puede quedar fuera del control del llamador y en manos del marco mediante una inversión de control o un mecanismo similar. [22] [23]

Sistemas operativos

Una API puede especificar la interfaz entre una aplicación y el sistema operativo . [24] POSIX , por ejemplo, proporciona un conjunto de especificaciones API comunes que tienen como objetivo permitir que una aplicación escrita para un sistema operativo compatible con POSIX se compile para otro sistema operativo compatible con POSIX.

Linux y Berkeley Software Distribution son ejemplos de sistemas operativos que implementan las API POSIX. [25]

Microsoft ha demostrado un fuerte compromiso con una API compatible con versiones anteriores, particularmente dentro de su biblioteca API de Windows (Win32), de modo que las aplicaciones más antiguas pueden ejecutarse en versiones más nuevas de Windows utilizando una configuración específica del ejecutable denominada "Modo de compatibilidad". [26]

Una API se diferencia de una interfaz binaria de aplicación (ABI) en que una API se basa en código fuente, mientras que una ABI se basa en código binario . Por ejemplo, POSIX proporciona API, mientras que Linux Standard Base proporciona una ABI. [27] [28]

API remotas

Las API remotas permiten a los desarrolladores manipular recursos remotos a través de protocolos de comunicación, estándares específicos de comunicación que permiten que diferentes tecnologías trabajen juntas, independientemente del lenguaje o la plataforma. Por ejemplo, la API de conectividad de bases de datos de Java permite a los desarrolladores consultar muchos tipos diferentes de bases de datos con el mismo conjunto de funciones, mientras que la API de invocación de métodos remotos de Java utiliza el Protocolo de métodos remotos de Java para permitir la invocación de funciones que operan de forma remota pero que parecen locales para el desarrollador. [29] [30]

Por lo tanto, las API remotas son útiles para mantener la abstracción de objetos en la programación orientada a objetos ; una llamada a un método , ejecutada localmente en un objeto proxy , invoca el método correspondiente en el objeto remoto, utilizando el protocolo remoto, y adquiere el resultado que se utilizará localmente como valor de retorno.

Una modificación del objeto proxy también dará como resultado una modificación correspondiente del objeto remoto. [31]

API web

Las API web son un servicio al que se accede desde dispositivos cliente (teléfonos móviles, portátiles, etc.) a un servidor web mediante el protocolo de transferencia de hipertexto (HTTP). Los dispositivos cliente envían una solicitud en forma de solicitud HTTP y reciben un mensaje de respuesta, normalmente en formato de notación de objetos JavaScript ( JSON ) o lenguaje de marcado extensible ( XML ). Los desarrolladores suelen utilizar las API web para consultar un servidor sobre un conjunto específico de datos de ese servidor.

Un ejemplo podría ser una API de una compañía naviera que se puede agregar a un sitio web enfocado en el comercio electrónico para facilitar el pedido de servicios de envío e incluir automáticamente las tarifas de envío actuales, sin que el desarrollador del sitio tenga que ingresar la tabla de tarifas del transportista en una base de datos web. Si bien "API web" históricamente ha sido prácticamente sinónimo de servicio web , la tendencia reciente (la llamada Web 2.0 ) se ha estado alejando de los servicios web basados ​​en el Protocolo simple de acceso a objetos ( SOAP ) y la arquitectura orientada a servicios (SOA) hacia recursos web de estilo de transferencia de estado representacional (REST) ​​más directo y arquitectura orientada a recursos (ROA). [32] Parte de esta tendencia está relacionada con el movimiento de la Web semántica hacia el Marco de descripción de recursos (RDF), un concepto para promover tecnologías de ingeniería de ontología basadas en la web . Las API web permiten la combinación de múltiples API en nuevas aplicaciones conocidas como mashups . [33]

En el ámbito de las redes sociales, las API web han permitido a las comunidades web compartir contenido y datos entre comunidades y aplicaciones. De esta manera, el contenido que se crea en un lugar de forma dinámica se puede publicar y actualizar en múltiples ubicaciones de la web. [34] Por ejemplo, la API REST de Twitter permite a los desarrolladores acceder a los datos básicos de Twitter y la API de búsqueda proporciona métodos para que los desarrolladores interactúen con los datos de búsqueda y tendencias de Twitter. [35]

Diseño

El diseño de una API tiene un impacto significativo en su uso. [5] En primer lugar, el diseño de interfaces de programación representa una parte importante de la arquitectura del software , la organización de una pieza compleja de software. [36] El principio de ocultamiento de información describe el papel de las interfaces de programación como habilitantes de la programación modular al ocultar los detalles de implementación de los módulos para que los usuarios de los módulos no necesiten comprender las complejidades dentro de los módulos. [37] Además del principio subyacente anterior, otras métricas para medir la usabilidad de una API pueden incluir propiedades como la eficiencia funcional, la corrección general y la capacidad de aprendizaje para principiantes. [38] Una forma sencilla y comúnmente adoptada de diseñar API es seguir las pautas de evaluación heurística de Nielsen . El patrón del método Factory también es típico en el diseño de API debido a su naturaleza reutilizable. [39] Por lo tanto, el diseño de una API intenta proporcionar solo las herramientas que un usuario esperaría. [5]

Sincrónico versus asincrónico

Una interfaz de programación de aplicaciones puede ser sincrónica o asincrónica . Una llamada API sincrónica es un patrón de diseño donde el sitio de llamada se bloquea mientras se espera que finalice el código llamado. [40] Sin embargo, con una llamada API asincrónica, el sitio de llamada no se bloquea mientras se espera que finalice el código llamado, y en su lugar, se notifica al hilo de llamada cuando llega la respuesta.

Seguridad

La seguridad de la API es muy crítica al desarrollar una API pública. Las amenazas comunes incluyen inyección SQL , ataques de denegación de servicio (DoS), autenticación rota y exposición de datos confidenciales. [41] Sin garantizar las prácticas de seguridad adecuadas, los actores maliciosos pueden obtener acceso a información que no deberían tener o incluso obtener privilegios para realizar cambios en su servidor. Algunas prácticas de seguridad comunes incluyen la seguridad de conexión adecuada mediante HTTPS , seguridad de contenido para mitigar ataques de inyección de datos y requerir una clave API para usar su servicio. [42] Muchos servicios de API públicos requieren que use una clave API asignada y se negarán a brindar datos sin enviar la clave con su solicitud. [43]

Políticas de lanzamiento

Las API son una de las formas más comunes en que las empresas tecnológicas se integran. Quienes proporcionan y utilizan API son considerados miembros de un ecosistema empresarial. [44]

Las principales políticas para la liberación de una API son: [45]

Implicaciones de la API pública

Un factor importante cuando una API se vuelve pública es su "estabilidad de interfaz". Los cambios en la API (por ejemplo, agregar nuevos parámetros a una llamada de función) podrían romper la compatibilidad con los clientes que dependen de esa API. [49]

Cuando partes de una API presentada públicamente están sujetas a cambios y, por lo tanto, no son estables, dichas partes de una API en particular deben documentarse explícitamente como "inestables". Por ejemplo, en la biblioteca Google Guava , las partes que se consideran inestables y que podrían cambiar pronto se marcan con la anotación Java @Beta . [50]

En ocasiones, una API pública puede declarar que algunas partes de la misma están obsoletas o rescindidas. Esto suele significar que una parte de la API debe considerarse candidata a ser eliminada o modificada de manera incompatible con versiones anteriores. Por lo tanto, estos cambios permiten a los desarrolladores dejar de lado partes de la API que se eliminarán o no serán compatibles en el futuro. [51]

El 19 de febrero de 2020, Akamai publicó su informe anual "State of the Internet", que muestra la creciente tendencia de los cibercriminales a atacar plataformas API públicas en servicios financieros de todo el mundo. Desde diciembre de 2017 hasta noviembre de 2019, Akamai fue testigo de 85,42 mil millones de ataques de violación de credenciales. Alrededor del 20%, o 16,55 mil millones, fueron contra nombres de host definidos como puntos finales de API. De estos, 473,5 millones han tenido como objetivo organizaciones del sector de servicios financieros. [52]

Documentación

La documentación de API describe los servicios que ofrece una API y cómo utilizar esos servicios, con el objetivo de cubrir todo lo que un cliente necesita saber para fines prácticos.

La documentación es crucial para el desarrollo y mantenimiento de aplicaciones que utilizan la API. [53] La documentación de la API se encuentra tradicionalmente en archivos de documentación, pero también se puede encontrar en redes sociales como blogs, foros y sitios web de preguntas y respuestas. [54]

Los archivos de documentación tradicionales suelen presentarse a través de un sistema de documentación, como Javadoc o Pydoc, que tiene una apariencia y una estructura uniformes. Sin embargo, los tipos de contenido incluidos en la documentación difieren de una API a otra. [55]

En aras de la claridad, la documentación de la API puede incluir una descripción de las clases y los métodos de la API, así como "escenarios de uso típicos, fragmentos de código, fundamentos de diseño, debates sobre el rendimiento y contratos", pero los detalles de implementación de los servicios de la API en sí generalmente se omiten.

La documentación de referencia para una API REST se puede generar automáticamente a partir de un documento OpenAPI, que es un archivo de texto legible por máquina que utiliza un formato y una sintaxis prescritos definidos en la Especificación OpenAPI . El documento OpenAPI define información básica, como el nombre y la descripción de la API, así como también describe las operaciones a las que la API proporciona acceso. [56]

La documentación de la API se puede enriquecer con información de metadatos como las anotaciones de Java . Estos metadatos pueden ser utilizados por el compilador, las herramientas y el entorno de ejecución para implementar comportamientos personalizados o un manejo personalizado. [57]

Disputa sobre la protección de los derechos de autor de las API

En 2010, Oracle Corporation demandó a Google por haber distribuido una nueva implementación de Java integrada en el sistema operativo Android. [58] Google no había obtenido ningún permiso para reproducir la API de Java, aunque se le había dado permiso al proyecto similar OpenJDK. Google se había puesto en contacto con Oracle para negociar una licencia para su API, pero fue rechazada debido a problemas de confianza. A pesar del desacuerdo, Google decidió utilizar el código de Oracle de todos modos. El juez William Alsup dictaminó en el caso Oracle v. Google que las API no pueden estar sujetas a derechos de autor en los EE. UU. y que una victoria de Oracle habría ampliado ampliamente la protección de los derechos de autor a un "conjunto funcional de símbolos" y permitido la protección de los derechos de autor de comandos de software simples:

Aceptar la afirmación de Oracle equivaldría a permitir a cualquiera registrar los derechos de autor de una versión de código para ejecutar un sistema de comandos y, de ese modo, prohibir a todos los demás escribir sus diferentes versiones para ejecutar todos o parte de los mismos comandos. [59] [60]

La decisión de Alsup fue revocada en 2014 en apelación ante el Tribunal de Apelaciones del Circuito Federal , aunque la cuestión de si dicho uso de las API constituye un uso justo quedó sin resolver. [61] [62]

En 2016, tras un juicio de dos semanas, un jurado determinó que la reimplementación de la API de Java por parte de Google constituía un uso justo , pero Oracle prometió apelar la decisión. [63] Oracle ganó su apelación, y el Tribunal de Apelaciones del Circuito Federal dictaminó que el uso de las API por parte de Google no calificaba para un uso justo. [64] En 2019, Google apeló ante la Corte Suprema de los Estados Unidos sobre los fallos de derechos de autor y uso justo, y la Corte Suprema concedió la revisión. [65] Debido a la pandemia de COVID-19 , las audiencias orales del caso se retrasaron hasta octubre de 2020. [66]

El Tribunal Supremo falló a favor de Google por 6 votos a 2. El juez Stephen Breyer emitió la opinión del tribunal y en un momento mencionó que "el código declarante, si es que puede ser protegido por derechos de autor, está más alejado del núcleo del derecho de autor que la mayoría de los programas informáticos". Esto significa que el código utilizado en las API se parece más a los diccionarios que a las novelas en términos de protección de derechos de autor. [67]

Ejemplos

Véase también

Referencias

  1. ^ Reddy, Martin (2011). Diseño de API para C++. Elsevier Science. pág. 1. ISBN 9780123850041Archivado desde el original el 15 de abril de 2023. Consultado el 21 de marzo de 2023 .
  2. ^ ab Lane, Kin (10 de octubre de 2019). "Introducción a las API: Historia de las API". Postman . Archivado desde el original el 11 de septiembre de 2020 . Consultado el 18 de septiembre de 2020 . Cuando escuchas el acrónimo "API" o su versión ampliada "Application Programming Interface", casi siempre se refiere a nuestro enfoque moderno, en el que usamos HTTP para proporcionar acceso a datos legibles por máquina en un formato JSON o XML, a menudo denominados simplemente "API web". Las API han existido casi tanto tiempo como la informática, pero las API web modernas comenzaron a tomar forma a principios de la década de 2000.
  3. ^ Wood, Laura (25 de agosto de 2021). "Mercado global de microservicios en la nube (de 2021 a 2026)". businesswire.com . Archivado desde el original el 8 de abril de 2022 . Consultado el 29 de marzo de 2022 .
  4. ^ Diseño de API web Creación de API que los desarrolladores adoran . O'Reilly Media. 2018. ISBN 9781492026877.
  5. ^ abc Clarke, Steven (2004). "Medición de la usabilidad de las API". Dr. Dobb's . Archivado desde el original el 3 de marzo de 2022 . Consultado el 29 de julio de 2016 .
  6. ^ ab Arquitecturas de bases de datos: un taller de viabilidad (informe). Washington, DC: Departamento de Comercio de los Estados Unidos, Oficina Nacional de Normas. Abril de 1981. págs. 45–47. hdl :2027/mdp.39015077587742. LCCN  81600004. Publicación especial 500-76 del NBS . Consultado el 18 de septiembre de 2020 .
  7. ^ abcd Bloch, Joshua (8 de agosto de 2018). Una breve y opinada historia de la API (discurso). QCon. San Francisco: InfoQ. Archivado desde el original el 22 de septiembre de 2020. Consultado el 18 de septiembre de 2020 .
  8. ^ ab Cotton, Ira W.; Greatorex, Frank S. (diciembre de 1968). "Estructuras de datos y técnicas para gráficos informáticos remotos". AFIPS '68: Actas de la Conferencia informática conjunta de otoño del 9 al 11 de diciembre de 1968. Conferencia informática conjunta de otoño de AFIPS 1968. Vol. I. San Francisco, California: Association for Computing Machinery. págs. 533–544. doi :10.1145/1476589.1476661. ISBN 978-1450378994. OCLC  1175621908. Archivado desde el original el 20 de octubre de 2020. Consultado el 19 de septiembre de 2020 .
  9. ^ "interfaz de programa de aplicación" . Oxford English Dictionary (edición en línea). Oxford University Press . (Se requiere suscripción o membresía a una institución participante).
  10. ^ Date, CJ (2019). EF Codd y la teoría relacional: una revisión y análisis detallados de los principales escritos de Codd sobre bases de datos. Lulu.com. p. 135. ISBN 978-1684705276.
  11. ^ Date, CJ; Codd, EF (enero de 1975). "Los enfoques relacional y de red: Comparación de las interfaces de programación de aplicaciones". En Randall Rustin (ed.). Actas del taller ACM-SIGMOD de 1974 sobre descripción, acceso y control de datos . Taller SIGMOD de 1974. Vol. 2. Ann Arbor, Michigan: Association for Computing Machinery. págs. 83–113. doi :10.1145/800297.811532. ISBN 978-1450374187.OCLC 1175623233  .
  12. ^ Carl, Malamud (1990). Análisis de redes Novell. Van Nostrand Reinhold. pág. 294. ISBN 978-0442003647Archivado desde el original el 26 de enero de 2021. Consultado el 19 de septiembre de 2020 .
  13. ^ ab Jin, Brenda; Sahni, Saurabh; Shevat, Amir (2018). Diseño de API web. Medios O'Reilly. ISBN 9781492026877Archivado desde el original el 10 de abril de 2023. Consultado el 21 de marzo de 2023 .
  14. ^ Fielding, Roy (2000). Estilos arquitectónicos y diseño de arquitecturas de software basadas en redes (PhD). Universidad de California, Irvine. Archivado desde el original el 22 de enero de 2020. Consultado el 18 de septiembre de 2020 .
  15. ^ Dotsika, Fefie (agosto de 2010). "API semánticas: escalamiento hacia la Web semántica". Revista internacional de gestión de la información . 30 (4): 335–342. doi :10.1016/j.ijinfomgt.2009.12.003.
  16. ^ Odersky, Martin; Spoon, Lex; Venners, Bill (10 de diciembre de 2008). «Combinación de Scala y Java». artima.com . Archivado desde el original el 8 de agosto de 2016. Consultado el 29 de julio de 2016 .
  17. ^ de Figueiredo, Luiz Henrique; Jerusalén, Roberto ; Filho, Waldemar Celes (1994). "El diseño e implementación de un lenguaje para extender aplicaciones". TeCGraf Grupo de Tecnología Em Computacao Gráfica : 273–284. CiteSeerX 10.1.1.47.5194 . S2CID  59833827 . Consultado el 29 de julio de 2016 . 
  18. ^ Sintes, Tony (13 de julio de 2001). "¿Qué es la API de Java?". JavaWorld . Archivado desde el original el 19 de octubre de 2020. Consultado el 18 de julio de 2020 .
  19. ^ Winters, Titus; Tom Manshreck; Hyrum Wright, eds. (2020). Ingeniería de software en Google: lecciones aprendidas de la programación a lo largo del tiempo . Sebastopol, CA: O'Reilly Media. ISBN 9781492082798.OCLC 1144086840  .
  20. ^ Mastrangelo, Luis; Ponzanelli, Luca; Mocci, Andrea; Lanza, Michele; Hauswirth, Matthias; Nystrom, Nathaniel (23 de octubre de 2015). "Use at your own risk: the Java unsafe API in the wild". Actas de la Conferencia internacional ACM SIGPLAN de 2015 sobre programación orientada a objetos, sistemas, lenguajes y aplicaciones . OOPSLA 2015. Nueva York, Nueva York, EE. UU.: Association for Computing Machinery. págs. 695–710. doi :10.1145/2814270.2814313. ISBN. 978-1-4503-3689-5.
  21. ^ "F2PY.org". F2PY.org. Archivado desde el original el 4 de julio de 2011. Consultado el 18 de diciembre de 2011 .
  22. ^ Fowler, Martin. «Inversión de control». Archivado desde el original el 23 de enero de 2011. Consultado el 25 de agosto de 2011 .
  23. ^ Fayad, Mohamed. "Object-Oriented Application Frameworks". Archivado desde el original el 5 de noviembre de 2013. Consultado el 5 de noviembre de 2013 .
  24. ^ Lewine, Donald A. (1991). Guía del programador POSIX. O'Reilly & Associates, Inc., pág. 1. ISBN 9780937175736Archivado desde el original el 22 de agosto de 2016 . Consultado el 2 de agosto de 2016 .
  25. ^ West, Joel; Dedrick, Jason (2001). «Estandarización de código abierto: el auge de Linux en la era de la red» (PDF) . Conocimiento, tecnología y política . 14 (2): 88–112. doi :10.1007/PL00022278. S2CID  46082812. Archivado (PDF) desde el original el 27 de agosto de 2016 . Consultado el 2 de agosto de 2016 .
  26. ^ Microsoft (octubre de 2001). «Soporte para Windows XP». Microsoft. pág. 4. Archivado desde el original el 26 de septiembre de 2009.
  27. ^ "Introducción a LSB". Linux Foundation. 21 de junio de 2012. Archivado desde el original el 2 de abril de 2015. Consultado el 27 de marzo de 2015 .
  28. ^ Stoughton, Nick (abril de 2005). "Actualización de estándares" (PDF) . USENIX . Archivado (PDF) desde el original el 27 de marzo de 2009. Consultado el 4 de junio de 2009 .
  29. ^ Bierhoff, Kevin (23 de abril de 2009). Cumplimiento del protocolo API en software orientado a objetos (PDF) (PhD). Universidad Carnegie Mellon. ISBN 978-1-109-31660-5. ProQuest  304864018. Archivado (PDF) del original el 11 de octubre de 2016 . Consultado el 29 de julio de 2016 .
  30. ^ Wilson, M. Jeff (10 de noviembre de 2000). "Sea inteligente con los proxies y RMI". JavaWorld . Archivado desde el original el 20 de julio de 2020 . Consultado el 18 de julio de 2020 .
  31. ^ Henning, Michi; Vinoski, Steve (1999). Programación avanzada en CORBA con C++ . Addison-Wesley . ISBN . 978-0201379273. Recuperado el 16 de junio de 2015 .
  32. ^ Benslimane, Djamal; Schahram Dustdar; Amit Sheth (2008). "Services Mashups: The New Generation of Web Applications". IEEE Internet Computing, vol. 12, no. 5. Instituto de Ingenieros Eléctricos y Electrónicos. págs. 13–15. Archivado desde el original el 2023-10-07 . Consultado el 2019-10-01 .
  33. ^ Niccolai, James (23 de abril de 2008), "Entonces, ¿qué es un mashup empresarial?", PC World , archivado desde el original el 10 de octubre de 2017
  34. ^ Parr, Ben (21 de mayo de 2009). "La evolución de la API de redes sociales". Mashable . Archivado desde el original el 11 de agosto de 2016 . Consultado el 26 de julio de 2016 .
  35. ^ "GET tendencias/lugar". Plataforma para desarrolladores de Twitter . Archivado desde el original el 2020-06-17 . Consultado el 2020-04-30 .
  36. ^ Garlan, David; Shaw, Mary (enero de 1994). "Introducción a la arquitectura de software" (PDF) . Avances en ingeniería de software e ingeniería del conocimiento . 1 . Archivado (PDF) del original el 6 de mayo de 2021 . Consultado el 8 de agosto de 2016 – a través de CMU School of Computer Science.
  37. ^ Parnas, DL (1972). "Sobre los criterios que se deben utilizar para descomponer sistemas en módulos". Comunicaciones de la ACM . 15 (12): 1053–1058. doi : 10.1145/361598.361623 . S2CID 53856438 . 
  38. ^ Myers, Brad A.; Stylos, Jeffrey (2016). "Mejora de la usabilidad de las API". Comunicaciones de la ACM . 59 (6): 62–69. doi : 10.1145/2896587 . S2CID 543853 . 
  39. ^ Brian Ellis, Jeffrey Stylos y Brad Myers. 2007. "El patrón de fábrica en el diseño de API: una evaluación de usabilidad Archivado el 21 de marzo de 2022 en Wayback Machine ". En Actas de la 29.ª conferencia internacional sobre ingeniería de software ( ICSE '07 ). IEEE Computer Society, EE. UU., 302–312. doi :10.1109/ICSE.2007.85.
  40. ^ "Escrituras sincrónicas frente a asincrónicas: centro de contacto empresarial empaquetado" - Cisco DevNet Archivado el 3 de agosto de 2022 en Wayback Machine .
  41. ^ Silva, Paulo (2019). «Mercado global de microservicios en la nube (2021 a 2026)». Archivado desde el original el 18 de febrero de 2020. Consultado el 29 de marzo de 2022 .
  42. ^ "Seguridad web". 18 de febrero de 2022. Archivado desde el original el 2 de abril de 2022. Consultado el 29 de marzo de 2022 .
  43. ^ "Claves API: ¿qué es una clave API? | Blog de APILayer". 2022-03-01. Archivado desde el original el 2022-05-16 . Consultado el 2022-07-15 .
  44. ^ de Ternay, Guerric (10 de octubre de 2015). "Business Ecosystem: Creating an Economic Moat". BoostCompanies . Archivado desde el original el 17 de septiembre de 2016. Consultado el 1 de febrero de 2016 .
  45. ^ Boyd, Mark (21 de febrero de 2014). "Privado, socio o público: ¿qué estrategia de API es mejor para las empresas?". ProgrammableWeb . Archivado desde el original el 18 de julio de 2016. Consultado el 2 de agosto de 2016 .
  46. ^ Weissbrot, Alison (7 de julio de 2016). "Las API de servicios de automóviles están en todas partes, pero ¿qué beneficios ofrecen a las aplicaciones asociadas?". AdExchanger . Archivado desde el original el 28 de julio de 2020. Consultado el 14 de agosto de 2020 .
  47. ^ "Documentación de la API v4 de Cloudflare". cloudflare . 25 de febrero de 2020. Archivado desde el original el 26 de febrero de 2020 . Consultado el 27 de febrero de 2020 .
  48. ^ Liew, Zell (17 de enero de 2018). "Las API de servicios de automóviles están en todas partes, pero ¿qué hay en ellas para las aplicaciones asociadas?". Smashing Magazine . Archivado desde el original el 21 de febrero de 2020. Consultado el 27 de febrero de 2020 .
  49. ^ Shi, Lin; Zhong, Hao; Xie, Tao; Li, Mingshu (2011). "Un estudio empírico sobre la evolución de la documentación de API". Enfoques fundamentales de la ingeniería de software. Conferencia internacional sobre enfoques fundamentales de la ingeniería de software. Apuntes de clase en informática. Vol. 6603. págs. 416–431. doi : 10.1007/978-3-642-19811-3_29 . ISBN 978-3-642-19810-6. Recuperado el 22 de julio de 2016 .
  50. ^ "guava-libraries – Guava: Google Core Libraries for Java 1.6+". Alojamiento de proyectos de Google . 4 de febrero de 2014. Archivado desde el original el 26 de marzo de 2014. Consultado el 11 de febrero de 2014 .
  51. ^ Oracle. "Cómo y cuándo dejar de usar las API". Documentación de Java SE . Archivado desde el original el 9 de abril de 2016. Consultado el 2 de agosto de 2016 .
  52. ^ Takanashi, Dean (19 de febrero de 2020). «Akamai: los cibercriminales están atacando las API de las empresas de servicios financieros». Venture Beat . Archivado desde el original el 27 de febrero de 2020. Consultado el 27 de febrero de 2020 .
  53. ^ Dekel, Uri; Herbsleb, James D. (mayo de 2009). "Mejora de la usabilidad de la documentación de API con Knowledge Pushing". Instituto de Investigación de Software, Facultad de Ciencias de la Computación . CiteSeerX 10.1.1.446.4214 . 
  54. ^ Parnin, Chris; Treude, Cristoph (mayo de 2011). "Medición de la documentación de API en la Web". Web2SE '11: Actas del 2º Taller internacional sobre Web 2.0 para ingeniería de software . pp. 25–30. doi :10.1145/1984701.1984706. ISBN 9781450305952. Número de identificación del sujeto  17751901.
  55. ^ Maalej, Waleed; Robillard, Martin P. (abril de 2012). "Patrones de conocimiento en la documentación de referencia de API" (PDF) . IEEE Transactions on Software Engineering . Archivado (PDF) del original el 22 de agosto de 2016 . Consultado el 22 de julio de 2016 .
  56. ^ "Estructura de un documento OpenAPI". Documentación OpenAPI . Archivado desde el original el 2022-11-06 . Consultado el 2022-11-06 .
  57. ^ "Anotaciones". Sun Microsystems . Archivado desde el original el 25 de septiembre de 2011. Consultado el 30 de septiembre de 2011 ..
  58. ^ "Oracle y el fin de la programación tal como la conocemos". DrDobbs. 1 de mayo de 2012. Archivado desde el original el 9 de mayo de 2012. Consultado el 9 de mayo de 2012 .
  59. ^ "Las API no pueden estar sujetas a derechos de autor, dice el juez en el caso Oracle". TGDaily. 2012-06-01. Archivado desde el original el 2012-12-21 . Consultado el 2012-12-06 .
  60. ^ "Oracle America, Inc. vs. Google Inc." (PDF) . Wired . 2012-05-31. Archivado (PDF) desde el original el 2013-11-04 . Consultado el 2013-09-22 .
  61. ^ "Oracle Am., Inc. v. Google Inc., No. 13-1021, Fed. Cir. 2014". Archivado desde el original el 10 de octubre de 2014.
  62. ^ Rosenblatt, Seth (9 de mayo de 2014). "La corte se pone del lado de Oracle en la apelación de patentes de Java sobre Android". CNET . Archivado desde el original el 19 de abril de 2017 . Consultado el 10 de mayo de 2014 .
  63. ^ "Google supera a Oracle: Android hace un "uso justo" de las API de Java". Ars Technica . 2016-05-26. Archivado desde el original el 2017-01-20 . Consultado el 2016-07-28 .
  64. ^ Decker, Susan (27 de marzo de 2018). «Oracle gana la reactivación de un caso de mil millones de dólares contra Google». Bloomberg Businessweek . Archivado desde el original el 9 de enero de 2022. Consultado el 27 de marzo de 2018 .
  65. ^ Lee, Timothy (25 de enero de 2019). «Google pide a la Corte Suprema que anule una sentencia desastrosa sobre los derechos de autor de las API». Ars Technica . Archivado desde el original el 23 de abril de 2019. Consultado el 8 de febrero de 2019 .
  66. ^ vkimber (28 de septiembre de 2020). «Google LLC v. Oracle America, Inc.». LII / Instituto de Información Legal . Archivado desde el original el 15 de abril de 2021. Consultado el 6 de marzo de 2021 .
  67. ^ "Corte Suprema de los Estados Unidos, n.º 18–956, GOOGLE LLC, PETITIONER v. ORACLE AMERICA, INC" (PDF) . 5 de abril de 2021. Archivado (PDF) del original el 5 de abril de 2021. Consultado el 25 de abril de 2021 .

Lectura adicional

Enlaces externos