Interface de programación de aplicación

Unha **API** ou **interface de programación de aplicacións** (do inglés: *application programming interface)* é unha peza de código que permite que dúas aplicacións se comuniquen entre elas, para compartir información e funcionalidades. Normalmente son utilizadas en  bibliotecas de programación.

Un exemplo práctico:  API de Twitter (agora X)

* Permite que unha aplicación publique chíos, lea chíos públicos, busque contido, ou obteña información dun usuario.
* Casos de uso: pódese desenvolver unha aplicación que amose os últimos chíos dun hashtag, sen precisar mais información de como Twitter garda ou organiza eses datos, só coñecendo a API.
* Transparencia: se Twitter mudase a súa base de datos interna, estrutura, etc, a API pode non variar, de xeito que as aplicacións que a empreguen seguirán funcionando sen cambios.

## Características 
Unha API representa unha interface de comunicación entre compoñentes de software. Trátase dun conxunto de chamadas a bibliotecas, que ofrecen acceso a servizos desde os procesos que as chaman, e representa un método para conseguir abstracción na programación; xeralmente (aínda que non necesariamente) entre as capas inferiores e  superiores do software. Un dos principais propósitos dunha API consiste en proporcionar un conxunto de funcións de uso xeral, por exemplo, para debuxar fiestras ou iconas na pantalla. Desta forma, os programadores benefícianse das vantaxes da API facendo uso da súa funcionalidade, evitándo o traballo de programar todo desde o principio. As API así mesmo son abstractas: o *software* que proporciona unha certa API xeralmente é chamado implementación.

Por exemplo, pódese ver a tarefa de escribir "Ola Mundo" sobre a pantalla en diferentes niveis de abstracción:

# Facendo todo o traballo desde o principio:
## Traza, sobre papel milimetrado, a forma das letras (e espazo) "O, l, a, M, u, n, d, o".
## Crea unha matriz de cadrados negros e brancos que se asemelle á sucesión de letras. 
## Mediante instrucións en ensamblador, escribe a información da matriz na memoria intermedia ("buffer") de pantalla.
## Mediante a instrución adecuada, fai que a tarxeta gráfica realice o envorcado desa información sobre a pantalla.
# Por medio dun sistema operativo para formar parte do traballo: 
## Carga unha fonte tipográfica proporcionada polo sistema operativo. 
## Fai que o sistema operativo borre a pantalla. 
## Fai que o sistema operativo debuxe o texto "Ola Mundo" usando a fonte cargada.
# Usando unha aplicación (que á súa vez usa o sistema operativo) para realizar a maior parte do traballo: escribe un documento HTML coas palabras "Ola Mundo" para que un navegador web como Firefox, Chrome, Opera, Safari, Midori, Iceweasel, Web o Microsoft Edge poida representalo no monitor.

Como se pode ver, a primeira opción require máis pasos, cada un dos cales é moito máis complicado que os pasos das opcións seguintes. Ademais, non resulta nada práctico usar a primeira formulación para representar unha gran cantidade de información, como un artigo enciclopédico, sobre a pantalla. O segundo enfoque simplifica a tarefa eliminando un paso e facendo o resto deles máis sinxelos. A terceira forma simplemente require escribir "Ola Mundo". 

Con todo, as API de alto nivel xeralmente perden flexibilidade; por exemplo, resulta moito máis difícil nun navegador web facer virar texto ao redor dun punto cun contorno intermitente que programalo a baixo nivel. Ao elixir usar unha API débese chegar a un certo equilibrio entre a súa potencia e simplicidade e a súa perda de flexibilidade.

## Exemplos de interfaces de programación 
* CORBA (*Common Object Request Broker Architecture*)
* Drupal API
* Glibc
* Microsoft Win32 API
* Microsoft WMI
* *ASPI, interface de software para asistir a dispositivos de bus SCSI*
* *The Carbon APIs for the Apple Macintosh Mac OS X*
* Symfony para PHP
* DirectX
* OpenGL

## Notas 
## Véxase tamén 
### Outros artigos 
* Entorno de desenvolvemento integrado
### Ligazons externas 
* *Google Code* (en inglés).
* *Documentación da  API de Flickr* (en inglés).
* API de Drupal (en inglés). 
* API de Twitter (en inglés).
* API de Afterbanks (en español). 
* Automatizar probas dunha API (en español).  
* Mellores prácticas para a seguridade en API (en español).