API ( IPA : [ ˌ e ɪ . p i ˈ a ɪ ] ; abreviatura del inglés. Interfaz de programación de aplicaciones [ 1 ] ) es una descripción de cómo un programa de computadora interactúa con otros. Por lo general, se incluye en la descripción de algún protocolo de Internet (por ejemplo, SCIM [2] ), marco de software ( marco [3] ) o estándar de llamada de función del sistema operativo [4] . A menudo implementado por una biblioteca de software independiente o un servicio del sistema operativo . Utilizado por los programadores al escribir todo tipo de aplicaciones .
En pocas palabras, se trata de un conjunto de componentes con los que un programa informático (bot o sitio web) puede utilizar otro programa.
Una API (interfaz de programación de aplicaciones) simplifica el proceso de programación al crear aplicaciones al abstraer la implementación subyacente y proporcionar solo los objetos o acciones que necesita el desarrollador. Si una GUI para un cliente de correo electrónico puede proporcionar al usuario un botón que recorrerá todos los pasos para obtener y resaltar nuevos correos electrónicos, entonces la API de E/S de archivos puede brindarle al desarrollador una función que copia un archivo de una ubicación a otra. sin necesidad de que el desarrollador comprenda las operaciones de archivos. [5]
Si un programa (módulo, biblioteca) se considera como una caja negra , entonces la API es un conjunto de "manijas" que están disponibles para el usuario de esta caja y que puede girar y tirar.
Los componentes de software interactúan entre sí a través de las API. En este caso, los componentes suelen formar una jerarquía: los componentes de alto nivel usan la API de los componentes de bajo nivel y estos, a su vez, usan la API de componentes de nivel incluso más bajo.
De acuerdo con este principio, se construyen protocolos de transferencia de datos a través de Internet . La pila de protocolo estándar ( modelo de red OSI ) contiene 7 capas (desde la capa de transferencia de bits física hasta la capa de protocolo de aplicación como HTTP e IMAP ). Cada capa utiliza la funcionalidad de la capa de transferencia de datos anterior ("inferior") y, a su vez, proporciona la funcionalidad deseada a la siguiente capa ("superior").
El concepto de protocolo tiene un significado cercano al concepto de API. Ambos son abstracciones de funcionalidad, solo en el primer caso estamos hablando de transferencia de datos y en el segundo, de la interacción de aplicaciones.
La API de la biblioteca de funciones y clases incluye una descripción de las firmas y la semántica de las funciones .
Una firma de función es parte de una declaración de función general que permite a los traductores identificar la función entre otras. Diferentes lenguajes de programación tienen ideas diferentes sobre la firma de una función, lo que también está muy relacionado con las posibilidades de sobrecarga de funciones en estos lenguajes.
A veces se hace una distinción entre una firma de llamada y una firma de implementación de función . La firma de llamada generalmente se compila de acuerdo con la construcción sintáctica de una llamada de función, teniendo en cuenta la firma del alcance de esta función, el nombre de la función, la secuencia de tipos reales de argumentos en la llamada y el tipo de la resultado. La firma de implementación generalmente involucra algunos elementos de la construcción sintáctica de la declaración de la función: el especificador del alcance de la función, su nombre y la secuencia de tipos de argumentos formales.
Por ejemplo, en el lenguaje de programación C++ , el compilador identifica de manera única una función simple por su nombre y la secuencia de sus tipos de argumento, lo que constituye la firma de la función en ese lenguaje. Si la función es un método de alguna clase, entonces el nombre de la clase también participará en la firma.
En el lenguaje de programación Java, la firma de un método es su nombre y la secuencia de tipos de parámetros; el tipo del valor devuelto no está involucrado en la firma. [6]
La semántica de una función es una descripción de lo que hace una función dada. La semántica de una función incluye una descripción de cuál es el resultado de la evaluación de la función, cómo y de qué depende este resultado. Por lo general, el resultado de la ejecución depende solo de los valores de los argumentos de la función, pero en algunos módulos existe un concepto de estado. Entonces el resultado de la función puede depender de este estado y, además, el resultado puede ser un cambio de estado. La lógica detrás de estas dependencias y cambios está relacionada con la semántica de la función. Una descripción completa de la semántica de las funciones es el código ejecutable de la función o la definición matemática de la función.
Casi todos los sistemas operativos ( UNIX , Windows , OS X , Linux , etc.) tienen una API con la que los programadores pueden crear aplicaciones para ese sistema operativo. La API principal de los sistemas operativos es un conjunto de llamadas al sistema .
En la industria del software, las API estándar comunes para la funcionalidad estándar desempeñan un papel importante, ya que garantizan que todos los programas que utilicen una API común funcionen igual de bien, o al menos de una manera familiar típica. En el caso de las API de GUI, esto significa que los programas tendrán una interfaz de usuario similar, lo que facilitará el aprendizaje de nuevos productos de software.
Por otro lado, las diferencias en las API de los distintos sistemas operativos dificultan mucho la portabilidad de aplicaciones entre plataformas. Existen varios métodos para evitar esta complejidad: escribir API "intermedias" (API para interfaces gráficas wxWidgets , GTK , etc.), escribir bibliotecas que asignan llamadas al sistema desde un sistema operativo a llamadas al sistema desde otro sistema operativo (entornos de ejecución como Wine , cygwin y etc.), introduciendo estándares de codificación en lenguajes de programación (por ejemplo, la biblioteca estándar C ), escribiendo lenguajes interpretados que se pueden implementar en diferentes plataformas ( sh , Python , Perl , PHP , Tcl , Javascript , Ruby , etc.).
Además, un programador a menudo tiene varias API diferentes a su disposición para lograr el mismo resultado. En este caso, cada API suele implementarse utilizando API de componentes de software de un nivel de abstracción más bajo.
Por ejemplo: para ver en el navegador la línea " ¡Hola, mundo!" ”, solo necesita crear un documento HTML con un título mínimo y un cuerpo simple que contenga la cadena dada. Cuando el navegador abre este documento , el programa del navegador pasará el nombre del archivo (o un descriptor de archivo ya abierto ) a la biblioteca que procesa los documentos HTML, que, a su vez, utilizando la API del sistema operativo, leerá este archivo y comprenderá su dispositivo. , luego llame secuencialmente a través de la API de la biblioteca de primitivas gráficas estándar para operaciones como "limpiar la ventana", "escribir "¡Hola, mundo!" en la fuente seleccionada". Durante la ejecución de estas operaciones, la biblioteca de primitivas gráficas se dirigirá a la biblioteca de interfaz de ventana con las solicitudes apropiadas, esta biblioteca ya se dirigirá a la API del sistema operativo para escribir datos en el búfer de la tarjeta de video .
Al mismo tiempo, en realidad existen varias API alternativas posibles en casi todos los niveles. Por ejemplo: podríamos escribir el documento fuente no en HTML, sino en LaTeX , podríamos usar cualquier navegador para mostrarlo. Además, diferentes navegadores usan diferentes bibliotecas HTML y, además, todo esto se puede construir usando diferentes bibliotecas primitivas y en diferentes sistemas operativos.
Las principales complejidades de los sistemas API en capas existentes son, por lo tanto:
|
Utilizado en el desarrollo web, generalmente contiene un determinado conjunto de solicitudes HTTP , así como una definición de la estructura de las respuestas HTTP, para cuya expresión utilizan el formato XML o JSON .
La API web es casi sinónimo de un servicio web, aunque la tendencia reciente de la Web 2.0 ha pasado de la comunicación SOAP a la comunicación REST . Las interfaces web que proporcionan una combinación de múltiples servicios en nuevas aplicaciones se conocen como mashups.
Ejemplos: API MediaWiki
de los sistemas operativos | Aspectos|||||
---|---|---|---|---|---|
| |||||
Tipos |
| ||||
Núcleo |
| ||||
Gestión de procesos |
| ||||
Gestión y direccionamiento de memoria | |||||
Herramientas de carga e inicialización | |||||
caparazón | |||||
Otro | |||||
Categoría Wikimedia Commons Wikilibros Wikcionario |