Python Consumindo APIs com Python – Parte 1

Veja neste artigo como consumir APIs com Python.

Fagner Pinheiro 23 de novembro de 2020

Há casos em que precisamos consumir dados de um servidor remoto para incrementar uma aplicação utilizando APIs externas. No Python este processo é muito simples e neste artigo vamos aprender a consumir APIs com Python.

O que são APIs?

Uma API, basicamente, é um conjunto de padrões de requisições e respostas que facilitam a construção de aplicações. Elas são responsáveis por retornar vários tipos de informações, existem APIs para retornar o clima de uma determinada cidade, o preço do dólar em um país, etc.

Possuímos aqui no blog um ótimo artigo que exemplifica muito bem o que é e como funciona uma API.

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

API utilizada

Para simular uma API completa, vamos utilizar o tw-dev-server , uma aplicação desenvolvida pelo Akira Hanashiro para simular uma API e, assim, conseguir realizar requisições HTTP e testar nossa aplicação.

Aqui no blog possuímos um artigo que explica todo o processo de instalação e uso do tw-dev-server, é muito importante que você leia e execute a aplicação em sua máquina.

Criando e configurando projeto

Agora que já possuímos a API rodando em nossa máquina, estamos prontos para consumí-la utilizando o Python. Para isso, vamos partir de uma aplicação muito simples, apenas um arquivo chamado main.py :

Criando projeto base

O primeiro passo, então, é instalar a biblioteca requests, responsável por enviar requisições HTTP com o Python. Para isso, com o pip instalado, basta executar o seguinte comando no terminal do próprio PyCharm:

pip install requests

Instalando biblioteca requests

Python - Orientação a objetos
Curso de Python - Orientação a objetos
CONHEÇA O CURSO

Criando registros na API

Para buscar os dados de uma API com Python é bem simples. Primeiramente, vamos criar alguns registros na API utilizando o próprio GUI do tw-dev-server na seguinte URL: https://treinaweb.github.io/tw-dev-server/.

Vale lembrar que o servidor precisa estar rodando em sua máquina para que tudo funcione corretamente:

Servidor do tw-dev-server rodando

Agora, basta criar alguns registros na API utilizando o navegador. Para isso, é só enviar uma requisição do tipo POST com os dados do registro. No meu caso, criei uma API de tarefas com título e descrição:

Cadastrando dados na API

Buscando dados de uma API

Agora, com a API pronta e com registros, podemos buscar estes dados utilizando o Python. Para isso, vamos criar um método chamado buscar_dados() em nosso projeto. Este método irá utilizar a biblioteca requests para enviar uma requisição GET (verbo responsável por informar à API que queremos listar seus dados) para a rota definida na API (no meu caso http://localhost:3002/api/todo):

import requests

def buscar_dados():
    request = requests.get("http://localhost:3002/api/todo")
    print(request.content)
Django - Fundamentos
Curso de Django - Fundamentos
CONHEÇA O CURSO

Depois, basta adicionar como parâmetro do print o conteúdo da variável request. Agora, para executar o método buscar_dados() quando executarmos o arquivo main.py, basta adicionar a chamada no seguinte bloco de código:

import requests

def buscar_dados():
    request = requests.get("http://localhost:3002/api/todo")
    print(request.content)

if __name__ == '__main__':
    buscar_dados()

Com isso, estamos enviando uma requisição do tipo GET (para buscar dados) para a rota http://localhost:3002/api/todo e, com isso, buscando todos os dados daquela API.

Agora, ao executar o arquivo main.py teremos o seguinte retorno:

Dados retornados da API

No terminal do PyCharm, podemos ver o conteúdo da API sendo impresso, o que significa que a requisição foi feita com sucesso.

Porém, esta resposta é exibida em bytes, se quisermos convertê-la para um formato de dicionário e, assim, acessar seus atributos de uma forma mais simples, basta utilizar a biblioteca json do próprio Python:

import requests
import json

def buscar_dados():
    request = requests.get("http://localhost:3002/api/todo")
    todos = json.loads(request.content)
    print(todos)
    print(todos[0]['titulo'])

if __name__ == '__main__':
    buscar_dados()

Esta biblioteca, basicamente, converte a resposta de bytes para um dicionário do Python, facilitando o acesso aos atributos de forma individual:

Convertendo resposta da API

Filtrando dados por ID

Há casos em que precisamos buscar um dado a partir do seu ID (ou qualquer outro atributo). Nestes casos, podemos enviar uma requisição com o verbo GET com o parâmetro que precisamos filtrar.

Utilizando o tw-dev-server, para filtrar os registros, enviamos este parâmetro na rota da requisição, como podemos ver abaixo:

import requests
import json

def buscar_dados_id(id):
    request = requests.get(f"http://localhost:3002/api/todo?id={id}")
    todo = json.loads(request.content)
    print(todo)
    print(todo['titulo'])

if __name__ == '__main__':
    # buscar_dados()
    buscar_dados_id("h7i39LVliST6r8kI")

Com isso, ao executar o código acima, será retornado apenas a todo com o id passado como parâmetro:

Filtrando dados da API

Conclusão

Como vimos acima, é muito simples consumir uma API com o Python, bastando apenas informar a rota desejada e qual verbo será utilizado para esta requisição. Neste artigo vimos como listar dados da API, no próximo artigo desta série veremos como cadastrar, editar e remover dados de uma API remota com o Python. Até lá! 😀

Deixe seu comentário

Conheça o autor desse artigo

  • Foto Autor Fagner Pinheiro
    Fagner Pinheiro

    Professor na TreinaWeb e graduado em Sistemas de Informação pelo Instituto Federal da Bahia. Apaixonado por desenvolvimento web, desktop e mobile desde os 12 anos de idade. Já utilizou todos os sistemas operacionais possíveis, mas hoje se contenta com o OSX instalado em seu desktop. Quando não está trabalhando, é IGL e Awper do time de CS:GO da Treinaweb. Até passou em uma peneira do Cruzeiro, mas preferiu estudar Python.

    Posts desse Autor

Artigos relacionados