Interface de programação de aplicação ou API
Uma interface de programação de aplicação (API) é um código que permite que dois programas de softwares se comuniquem entre si.
A API determina a maneira correta para que um desenvolvedor escreva um programa que solicite os serviços de um sistema operacional (SO) ou de outro aplicação. As APIs são implementadas por meio de chamadas a funções compostas de verbos e substantivos. A sintaxe necessária é descrita na documentação da aplicação que está sendo chamada.
Como funcionam as APIs
As APIs são constituídas por dois elementos relacionados. O primeiro é uma especificação que descreve como as informações são trocadas entre os programas, feita sob a forma de um pedido de processamento e um retorno dos dados necessários. O segundo é uma interface de software escrita para essa especificação e publicada de alguma forma para seu uso.
Diz-se que o software que deseja acessar os recursos e as capacidades da API a chama, e o software que cria a API a publica.
Por que as APIs são importantes para as empresas
A web, o software desenvolvido para trocar informações por meio da internet e a computação em nuvem se combinaram para aumentar o interesse nas APIs em geral e nos serviços em particular.
O software que já havia sido desenvolvido de forma personalizada para um propósito específico agora é frequentemente escrito referenciando as APIs que fornecem recursos amplamente úteis, reduzindo o tempo e o custo de desenvolvimento e diminuindo o risco de erros.
Na última década as APIs melhoraram consideravelmente a qualidade do software. Além disso, o crescente número de serviços da web expostos por meio de APIs pelos provedores de nuvem também está impulsionando a criação de aplicativos específicos para a nuvem, esforços de Internet das Coisas (IoT) e aplicações para dispositivos e usuários móveis.
Três tipos básicos de APIs
As APIs assumem três formas básicas: locais, web e programas.
As APIs locais são a forma original, de onde vem o nome. Elas oferecem serviços de SO ou middleware aos programas de aplicação. As APIs .NET da Microsoft, a TAPI (API de telefonia) para aplicações de voz e as APIs de acesso aos banco de dados são exemplos de APIs de localização.
As APIs web são desenvolvidas para configurar recursos amplamente utilizados, como páginas HTML, e são acessadas por meio de um protocolo HTTP simples. Qualquer URL web ativa uma API web. As APIs web são frequentemente chamadas de REST (Representational State Transfer) ou RESTful, porque o editor de interfaces REST não salva nenhum dado internamente entre as solicitações. Do mesmo jeito, as solicitações de muitos usuários podem ser misturadas, como fariam na internet.
As APIs de programa são baseadas na tecnologia de chamada de procedimento remoto (RPC), que faz com que um componente do programa remoto pareça ser local para o resto do software. As APIs de Arquitetura Orientada a Serviços (SOA), como as APIs da série WS da Microsoft, são APIs de programa.
As APIs assumem três formas básicas: local, web e programa. Veja a seguir um panorama de cada uma delas.
Por que o design da API é importante?
Tradicionalmente, as aplicações que publicam as APIs devem ser escritas em uma linguagem de programação, no entanto, como as APIs estão cada vez mais difundidas, a validação adicional da estrutura de uma API é importante.
Um bom design de API é fundamental para que seu uso seja bem-sucedido, para isso, os desenvolvedores de software investem um tempo considerável revisando todas as aplicações possíveis e a maneira mais lógica de usá-las.
As estruturas de dados e os valores dos parâmetros são de particular importância porque deve haver correspondência entre o chamador de uma API e o seu editor.
REST e a web
Ainda que as aplicações responsáveis por chamar as APIs tenham sido tradicionalmente escritas em linguagens de programação, a internet e a nuvem estão mudando isso. As Web APIs podem ser chamadas por meio de qualquer linguagem de programação e também podem ser acessadas por páginas da web criadas em HTML ou por ferramentas de construção de aplicativos.
O crescente papel que a web desempenha em nossas vidas e nos negócios deu origem a uma explosão no modelo REST e ao uso de ferramentas de programação simples (ou mesmo sem nenhuma programação), para o acesso à API.
Exemplos de API na comunidade de desenvolvedores
Os sistemas operacionais e as ferramentas de middleware expõem suas características por meio de coleções de APIs geralmente chamadas de "kits de ferramentas", e dois diferentes conjuntos de ferramentas que suportam as mesmas especificações de API são intercambiáveis para os programadores, já que é a base para as considerações de compatibilidade e invariabilidade. As especificações da API.NET da Microsoft são a base de um pacote de middleware equivalente ao Linux de código aberto que já é compatível com a Microsoft, por exemplo.
Atualmente, a internet é o principal controlador das APIs, e empresas como o Facebook, Google e Yahoo publicam as APIs para encorajar os profissionais a desenvolverem suas soluções. Essas APIs nos forneceram tudo, desde novas funções da internet que navegam pelos sites de outros serviços até aplicativos para dispositivos móveis que oferecem um acesso fácil aos recursos web.
As novas características, como a entrega de conteúdo, a realidade aumentada e as aplicações de tecnologia vestível são amplamente criadas por meio dessas APIs.
Tendências de API na nuvem
A computação em nuvem apresenta novos recursos para dividir o software em componentes reutilizáveis, conectá-los às solicitações e dimensionar a quantidade de cópias do software conforme a demanda se altera.
Esses recursos de nuvem já começaram a mudar o foco das APIs, que passaram de simples modelos centrados em programadores RCP para modelos centrados em Web RESTful, e podem até mesmo ser chamadas de "programação funcional" ou "modelos lambda" de serviços que podem ser escalados instantaneamente, conforme seja necessário na nuvem.
APIs como serviços
A tendência de pensar que as APIs descrevem soluções gerais mudou a terminologia. Embora se espere que elas sejam utilizadas como uma ferramenta geral por muitas aplicações e usuários, são chamadas de serviços e normalmente exigem um desenvolvimento e uma implementação mais controlados.
SOA e microsserviços são exemplos de APIs de serviço. Os serviços são a tendência mais atual em APIs a ponto de que seja possível que todas as APIs do futuro sejam vistas como prestação de serviços.
Teste de API
Como todo software, as APIs devem ser testadas. O objetivo dos testes é validar as APIs publicadas, confrontando-as com as especificações que seus usuários utilizarão para formatar as suas solicitações.
Esses testes normalmente são executados como parte do gerenciamento do ciclo de vida do aplicativo (ALM), tanto para o software que publica as APIs quanto para todos os softwares que as utilizam. As APIs também devem ser testadas em sua forma publicada para garantir que possam ser acessadas corretamente.
Gerenciamento de API
O gerenciamento de API é um passo além do que normalmente é associado ao desenvolvimento de software. É o conjunto de atividades associadas à publicação da API para o seu uso, permitindo aos usuários localizá-la, assim como suas especificações, e controlar o acesso de acordo com as permissões ou políticas definidas pelo proprietário.
A segurança e a governança da API estão sob a alçada da administração da API. As ferramentas usadas para seu gerenciamento incluem diretórios ou catálogos de API.