O que diabos é uma API?

Mar 20 2023
Por que usar APIs em seu código é como brincar com LEGO. Você pode ter ouvido o termo “API” na maioria dos tutoriais de codificação que você leu.

Por que usar APIs em seu código é como brincar com LEGO.

Foto de Xavi Cabrera no Unsplash

Você pode ter ouvido o termo “API” na maioria dos tutoriais de codificação que você leu. Se você pesquisar “API” no Google, obterá um grande parágrafo sobre como significa “Application Programming Interface” e uma explicação sobre “REST” e “protocolos” e assim por diante, como se isso tornasse tudo mais claro.

Tudo o que você precisa saber sobre APIs é que elas são uma lista de funções que você pode usar para automatizar tarefas e obter dados . Por exemplo, você pode:

  • Use a API do Gmail para automatizar a leitura e filtragem de sua caixa de entrada com código
  • Use a API do Reddit para criar um bot que converte automaticamente unidades métricas em imperiais com código
  • Use a API do Fitbit para obter dados do seu Fitbit e enviá-los para um aplicativo personalizado em seu telefone
  • Como podemos usar uma API para um fórum como o Reddit. Foto original de Xavi Cabrera no Unsplash
Site e catálogo Pick a Brick da LEGO.

Na mesma linha, as APIs fornecem pequenos pedaços de código que permitem que você crie programas. Eles possuem funções como:

  • getLikeCount()
  • createGoogleSheet()
  • sendEmail()

Como sabemos quais são essas “peças de código”?

Cada API vem com uma documentação que lista todas as maneiras de usá-la, como um catálogo LEGO. Ele mostra tudo o que você pode fazer com uma API, que para a API do Reddit pode ser “postar um comentário” ou “salvar uma postagem”. A documentação geralmente é encontrada online no site de uma empresa, geralmente em alguma página oculta do desenvolvedor. As “ coisas que você pode fazer” são chamadas de “métodos de API”.

A API do Slack tem uma documentação interessante.

Algumas documentações são melhores que outras , mas a documentação é basicamente uma lista de pedaços de código pré-fabricados e funções que você pode usar em seu próprio código .

A API mais fácil: obtendo seu endereço IP

Vejamos uma API que possui apenas uma peça: a API IPify , que informa qual é o seu endereço IP.

Um endereço IP é como um número de telefone ou endereço de correspondência para o seu computador. Ele diz à internet onde encontrá-lo. Os sites também têm seus próprios endereços IP.

Vamos enviar um comando para IPify.org e perguntar qual é o nosso endereço IP. Isso funciona no Mac OS e no Windows.

Abra o Terminal (Mac) ou Prompt de Comando (Windows) e digite o seguinte:

curl 'https://api.ipify.org?format=json'

      
                
What the command looks like in Terminal on a MacBook.

{"ip": "68.142.10.250"}

Para verificar se este é o seu IP real, visite WhatIsMyIPAddress.com .

JSON é um dos formatos de dados mais populares para APIs da Web modernas. Ele coloca tudo no {“key”: value}formato para que todos os dados tenham um rótulo. Outras APIs podem usar XML , que tem um <Key>value</Key>formato semelhante, e muitas APIs permitem que você escolha entre as duas.

Esta é a essência de muitas APIs da web. Pedimos a um site alguns dados e ele responde com esses dados. APIs comuns em pesquisas científicas, como as APIs da NASA , USGS e USFDA , funcionam dessa maneira. Podemos obter dados sobre satélites espaciais, a elevação de montanhas nos Estados Unidos e a lista de medicamentos aprovados pela FDA se apenas pedirmos.

Que tal automatizar a atividade do usuário?

E se não quisermos apenas obter dados de um site? Que tal fazer bots ou automatizar nosso dia de trabalho?

É aqui que entram as APIs mais complicadas. Elas ainda envolvem comandos singulares nos quais falamos com um site ou aplicativo e dizemos: “Quero obter esses dados (ou enviar esses dados)”. E o aplicativo responde de acordo. Mas agora estamos juntando vários comandos para realizar atividades mais sofisticadas.

Foto de Aedrian no Unsplash

Um exemplo de várias etapas: a API do Reddit

O Reddit é o maior fórum online do mundo. O Reddit publica sua API online e lista tudo o que você pode fazer com a API na barra lateral à esquerda.

Uma visão geral da API do Reddit. Os sites mais populares terão uma página de API (um tanto oculta).

Na barra lateral estão os métodos que podemos usar para obter nossa lista de amigos, karma, troféus e muito mais. Cada ação que um usuário pode fazer no site tem seu próprio método de API correspondente.

Se visitarmos a página da API do Reddit e rolar para baixo, há uma seção, links & comments , que mostra todas as interações normais do usuário e seus métodos de API correspondentes. Poderíamos usá-los para criar uma conta de bot ou algo semelhante.

Uma lista de coisas que podemos fazer de forma automatizada se usarmos a API do Reddit.

Temos interações diárias do usuário, como comentar ( /api/comment), seguir e salvar postagens . A API do Reddit torna possível fazer isso com código. O /api/prefixo em todos os métodos parece estranho, mas explicaremos isso em um minuto.

A API de pesquisa do Google , por outro lado, possui apenas um método, que é pesquisar :

Uma explicação do método “lista” (basicamente “pesquisa”) da API de pesquisa do Google.

A API de pesquisa do Google é simples, porque o Google sabe que há apenas uma coisa que os programadores se preocupam em fazer com a pesquisa do Google: pesquisar.

Esse é o objetivo de toda API, resumir todas as atividades e opções do site ou aplicativo normal nesse tipo de função pronta para código “one liner” que podemos usar em Python, JavaScript, Bash, Java, R, etc. .

  • Uma API de site deseja que você seja capaz de fazer interações normais com o usuário (fazer login, comentar, pesquisar, excluir coisas) com o mínimo de código possível
  • Uma API vestível deseja que você consiga obter dados, enviar um alerta ao usuário ou alterar as configurações do wearable com o mínimo de código possível
Se este carro tivesse uma API, ele teria um atributo “pneu” e um método “drive()”. Foto de Eric e Niklas no Unsplash

Como é o uso de uma API no código

Então, como isso se parece no código? A API do Reddit diz que o método comment é chamado /api/comment. O que isso significa? Não podemos simplesmente inserir /api/commentum arquivo Python e encerrar o dia, certo? Certo.

Existem algumas diferenças entre usar uma API para conversar com um site e usar a API de um dispositivo vestível. Ambos ainda são parecidos com LEGO, pois permitem que você faça coisas complexas com algumas linhas de código, mas o código em si parece bem diferente. Portanto, forneceremos exemplos separados para eles.

Mais aprofundado: APIs da Web em código

Vimos que os métodos da API do Reddit são listados com várias barras:

Isso não se parece com Python, JavaScript ou código. Diz /api/? O que é aquilo?

Na verdade, são partes de links HTTP , exatamente como os que você digita no Chrome ou no Firefox.

Por que links da web embora? Nós os colocamos diretamente em nosso código? Sim, e por um bom motivo.

Quando usamos uma API da Web, como a do Reddit, do Gmail ou mesmo das APIs do NIH ou da NASA , nosso código está basicamente conversando com um site. Sites usam links/that/look/like/thispara separar suas páginas e funções. O Google está em google.com, mas seus resultados de pesquisa estão em google.com/search.

Vamos acabar colocando esse endpoint em nosso código em algum lugar assim:

google_search_api = "https://www.googleapis.com/customsearch/"

Agora, o código não está realmente falando com um site, mas com um servidor (como um site sem cabeça), mas eles organizam as coisas da mesma forma com /slashes/, no que diz respeito às APIs. Assim como quando você publica um blog como um usuário regular em um site da página website.com/post, seu código pode se comunicar com o terminal de postagem de blog do servidor API em api.website.com/postou website.com/api/postou algo semelhante.

Foto de Caspar Camille Rubin no Unsplash

Pense assim: quando você verifica sua caixa de entrada do Gmail em seu laptop ou telefone, seu navegador:

  1. Alcance através da Internet paragmail.com
  2. Diga a gmail.com, “Posso obter a página da Web em /mail/inbox?”
  3. Em seguida, o Gmail envia a página da Web da sua caixa de entrada de volta para o navegador, para que você possa vê-la.
  1. Alcançargmail.googleapis.com
  2. Peça gmail.googleapis.comsua caixa de entrada de e-mail
  3. Em seguida, a API do Gmail enviará apenas os dados em vez de todo o site

Dados puros são amigáveis ​​ao código, e é para isso que as APIs são feitas.

Exemplo: Obtendo Medicamentos da API openFDA

Aqui está um pequeno exemplo Python para consultar a API openFDA do USFDA , que lista todos os medicamentos aprovados pela FDA:

# import an HTTP library
import requests

# Tell "requests" to request data from the openFDA "Drugs" endpoint
drugs_http_endpoint = "https://api.fda.gov/drug/label.json?limit=100"
drugs = requests.get(drugs_http_endpoint)

# Print all the data that we got from USFDA about drugs
print(drugs.json())

Observação: o exemplo acima usa a popular requests biblioteca HTTP para Python.

E as APIs para Bluetooth e wearables?

Usar a API de um dispositivo vestível (como Fitbit ou Apple Watch) é um pouco diferente de usar a API de um site, mas eles são documentados da mesma forma. Por exemplo, em vez de um método de “comentário” , uma API vestível pode ter os seguintes métodos:

  • obter frequência cardíaca
  • obter dados de movimento (do acelerômetro e giroscópio)
  • enviar um alerta ao usuário

Exemplo de wearable: a API do Fitbit

Em vez de consultar algum site para obter dados, você pode querer codificar para um dispositivo específico, como o Fitbit .

Fitbits são dispositivos vestíveis que monitoram seu exercício, frequência cardíaca e muito mais. Foto de Shane no Unsplash

Existem várias partes da API do Fitbit . Ele ainda tem sua própria API da Web.

A API do Fitbit tem várias partes: a API do dispositivo, a API de configurações, a API complementar e a API da Web.

Vejamos uma das partes da API do dispositivo .

Na página da API do dispositivo , a barra lateral esquerda mostra uma lista de todas as partes da API com as quais podemos interagir.

Cada uma dessas categorias maiores é uma espécie de coleção de peças LEGO , cujas peças podemos ler mais sobre e usar em nosso próprio código. As peças de LEGO são coisas como:

  • ler ou acertar o relógio
  • lendo o acelerômetro (parte do rastreador de movimento)
  • leitura do monitor de frequência cardíaca , etc.

Há muitas informações, mas a página tem um script de exemplo curto e, em seguida, lista várias peças de LEGO relacionadas à frequência cardíaca que podemos usar em nosso próprio código:

  • activated(informa se o sensor de frequência cardíaca está ligado ou não)
  • heartRate(nos informa a frequência cardíaca atual)
  • onactivate(uma função que podemos usar para dizer ao Fitbit o que fazer assim que o sensor de frequência cardíaca for ativado)

Em pseudocódigo, o acima significa:

import HeartRateSensor code from Fitbit's API

if HeartRateSensor was imported {
    hrm = the HeartRateSensor
    
    Listen for heart rate sensor to send data, then print it.

    Start the heart rate sensor (which will then start the above "Listen" code)
}

Esse garoto sabe como ler a documentação da API. Foto de Kelly Sikkema no Unsplash

Se você ficar preso ao usar uma API, a empresa que a criou normalmente terá uma documentação on-line que você pode pesquisar no Google. (Exemplo: pesquisar “API Fitbit” mostrará a API Fitbit real como o principal resultado da pesquisa.) Caso contrário, você pode entrar em contato diretamente com a empresa para perguntar se eles têm a documentação da API que podem enviar.

Em alguns casos, a documentação da API pode ser realmente decepcionante , levando à frustração da comunidade de desenvolvedores. Mas essa é uma oportunidade de contribuir e preencher as lacunas ou fazer seu próprio produto melhor.

Resumo

Os engenheiros escrevem APIs na esperança de que você desenvolva e use seus aplicativos, conjuntos de dados e vestíveis. Agora que você entende as APIs, confira essas APIs populares para começar . Na maioria das vezes, sua tecnologia e aplicativos favoritos têm APIs que você pode usar em seu próximo projeto.

Se você tiver alguma dúvida ou comentário, envie-nos um e-mail para [email protected] ou uma mensagem no Instagram (@protobioengineering) . Obrigado por ler.

Links Relacionados

  • GitHub para biólogos
  • API Dataverse: Software e dados de pesquisa de código aberto
  • Postman: Crie e teste APIs
  • Foto de Phil Hearing no Unsplash