O que é uma API? Em inglês por favor.

Obra de Phillip Blackowl . Tradução para o espanhol. Tradução em português .

Antes de aprender desenvolvimento de software, a API soava como uma espécie de cerveja.

Hoje uso o termo com tanta frequência que, de fato, tentei recentemente comprar uma API em um bar.

A resposta do barman foi lançar um 404: recurso não encontrado.

Conheço muitas pessoas, trabalhando em tecnologia e em outros lugares, que têm uma idéia bastante vaga ou incorreta sobre o que esse termo bastante comum significa.

Tecnicamente, API significa Interface de Programação de Aplicativos . Em algum momento ou outro, a maioria das grandes empresas criou APIs para seus clientes ou para uso interno.

Mas como você explica a API em inglês simples? E existe um significado mais amplo do que o utilizado no desenvolvimento e nos negócios? Primeiro, vamos voltar e ver como a própria Web funciona.

WWW e servidores remotos

Quando penso na Web, imagino uma grande rede de servidores conectados .

Cada página na internet é armazenada em algum lugar em um servidor remoto. Um servidor remoto não é tão místico depois disso – é apenas uma parte de um computador localizado remotamente otimizado para processar solicitações.

Para colocar as coisas em perspectiva, você pode girar um servidor em seu laptop capaz de servir um site inteiro na Web (na verdade, um servidor local é o que os engenheiros usam para desenvolver sites antes de liberá-los para o público).

Quando você escreve www.facebook.com no seu navegador, uma solicitação é enviada para o servidor remoto do Facebook. Uma vez que seu navegador recebe a resposta, ele interpreta o código e exibe a página.

Para o navegador, também conhecido como cliente , o servidor do Facebook é uma API. Isso significa que toda vez que você visita uma página na Web, você interage com a API do servidor remoto.

Uma API não é o mesmo que o servidor remoto – em vez disso é a parte do servidor que recebe pedidos e envia respostas .

APIs como forma de atender seus clientes

Você provavelmente já ouviu falar de empresas API de empacotamento como produtos. Por exemplo, Weather Underground vende acesso à sua API de dados meteorológicos .

Exemplo de cenário: o site da sua pequena empresa possui um formulário usado para assinar clientes para compromissos. Você deseja dar aos seus clientes a capacidade de criar automaticamente um evento do calendário do Google com os detalhes desse compromisso.

Uso da API: a idéia é que o servidor do seu site fale diretamente com o servidor do Google com um pedido para criar um evento com os detalhes fornecidos. Seu servidor receberia a resposta do Google, processaria e enviaria informações relevantes para o navegador, como uma mensagem de confirmação para o usuário.

Alternativamente, seu navegador geralmente pode enviar uma solicitação de API diretamente ao servidor do Google, ignorando seu servidor.

Como esta API do Google Agenda é diferente da API de qualquer outro servidor remoto lá fora?

Em termos técnicos , a diferença é o formato do pedido e a resposta.

Para renderizar toda a página da Web, seu navegador espera uma resposta em HTML, que contém código de apresentação, enquanto a chamada da API do Google Agenda apenas retornaria os dados – provavelmente em um formato como o JSON .

Se o servidor do seu site estiver fazendo a solicitação da API, o servidor do seu site é o cliente (semelhante ao seu navegador sendo o cliente quando você o usa para navegar até um site).

Do ponto de vista dos usuários, as APIs permitem que eles completem a ação sem sair do seu site.

A maioria dos sites modernos consome pelo menos algumas APIs de terceiros.

Muitos problemas já possuem uma solução de terceiros, seja na forma de uma biblioteca ou serviço. Muitas vezes, é mais fácil e confiável usar uma solução existente.

Não é incomum para as equipes de desenvolvimento dividirem a sua aplicação em vários servidores que falam uns com os outros através de APIs. Os servidores que executam funções auxiliares para o servidor de aplicativos principal são comumente designados como micro-serviços .

Para resumir, quando uma empresa oferece uma API a seus clientes, isso significa apenas que eles criaram um conjunto de URLs dedicados que retornam respostas de dados puras – o que significa que as respostas não conterão o tipo de despesas gerais de apresentação que você esperaria em uma interface gráfica de usuário como um site .

Você pode fazer esses pedidos com seu navegador? Muitas vezes, sim. Uma vez que a transmissão HTTP real acontece no texto, seu navegador sempre fará o melhor que pode para exibir a resposta.

Por exemplo, você pode acessar a API do GitHub diretamente com seu navegador sem precisar de um token de acesso. Aqui está a resposta JSON que você obtém quando você visita a rota API do usuário do GitHub no seu navegador ( https://api.github.com/users/petrgazarov ):

 { 
"login": "petrgazarov",
"id": 5581195,
"avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/petrgazarov",
"html_url": "https://github.com/petrgazarov",
"followers_url": "https://api.github.com/users/petrgazarov/followers",
"follow_url": "https://api.github.com/users/petrgazarov/following{/other_user}",
"gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}",
"starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions",
"organisations_url": "https://api.github.com/users/petrgazarov/orgs",
"repos_url": "https://api.github.com/users/petrgazarov/repos",
"events_url": "https://api.github.com/users/petrgazarov/events{/privacy}",
"received_events_url": "https://api.github.com/users/petrgazarov/received_events",
"tipo": "Usuário",
"site_admin": falso,
"nome": "Petr Gazarov",
"empresa": "PolicyGenius",
"blog": "http://petrgazarov.com/",
"localização": "NYC",
"email": "petrgazarov@gmail.com",
"contratável": nulo,
"bio": nulo
"public_repos": 23,
"public_gists": 0,
"seguidores": 7,
"seguindo": 14,
"created_at": "2013-10-01T00: 33: 23Z",
"updated_at": "2016-08-02T05: 44: 01Z"
}

O navegador parece ter feito apenas uma boa exibição de uma resposta JSON. Uma resposta JSON como esta está pronta para uso em seu código. É fácil extrair dados desse texto. Então você pode fazer o que quiser com os dados.

A é para "Aplicação"

Para fechar, vamos lançar mais alguns exemplos de APIs.

"Aplicação" pode se referir a muitas coisas. Aqui estão alguns deles no contexto da API:

  1. Um pedaço de software com uma função distinta.
  2. Todo o servidor, todo o aplicativo, ou apenas uma pequena parte de um aplicativo.

Basicamente, qualquer parte do software que pode ser distintamente separado do seu ambiente, pode ser um "A" na API, e provavelmente também terá algum tipo de API.

Digamos que você esteja usando uma biblioteca de terceiros em seu código. Uma vez incorporado ao seu código, uma biblioteca se torna parte de seu aplicativo geral. Sendo um software distinto, a biblioteca provavelmente terá uma API que lhe permitirá interagir com o resto do seu código.

Aqui está outro exemplo: no Object Oriented Design , o código é organizado em objetos. Seu aplicativo pode ter centenas de objetos definidos que podem interagir uns com os outros.

Cada objeto possui uma API – um conjunto de métodos e propriedades públicos que ele usa para interagir com outros objetos em sua aplicação.

Um objeto também pode ter lógica interna que é privada, o que significa que é escondido do alcance externo (e não uma API).

Pelo que abordamos, espero que você tire o significado mais amplo da API, bem como os usos mais comuns do termo hoje.

Texto original em inglês.