Consumindo APIs com Python - Parte 1 \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 05 Horas 

 15 Min 

 07 Seg 

   Tempo restante da oferta: 05 15 07 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Consumindo APIs com Python - Parte 1  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

# Consumindo APIs com Python - Parte 1

 Veja neste artigo como consumir APIs com Python.

 [ Fagner Pinheiro ](https://www.treinaweb.com.br/blog/autor/fagner-pinheiro) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/consumindo-api-python.png)  

Há casos em que precisamos consumir dados de um servidor remoto para incrementar uma aplicação utilizando APIs externas. No [Python](https://www.treinaweb.com.br/blog/o-que-e-python/ "Python") este processo é muito simples e neste artigo vamos aprender a consumir APIs com Python.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/10/E-BOOK-GRATUITO-PYTHON.jpg) ](https://www.treinaweb.com.br/ebook/guia-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](https://www.treinaweb.com.br/blog/o-que-e-uma-api/) que exemplifica muito bem o que é e como funciona uma API.

[  ![Python - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/python.svg)   Curso Python - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/python-fundamentos)

## API utilizada

Para simular uma API completa, vamos utilizar o `tw-dev-server` , uma aplicação desenvolvida pelo [Akira Hanashiro](https://www.treinaweb.com.br/blog/author/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](https://www.treinaweb.com.br/blog/tw-dev-server-como-ele-pode-te-ajudar-a-estudar-programacao/) 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](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/criando-projeto-base.png)

O primeiro passo, então, é instalar a [biblioteca `requests`](https://requests.readthedocs.io/en/master/), responsável por enviar requisições HTTP com o Python. Para isso, com o [`pip` instalado](https://www.treinaweb.com.br/blog/gerenciando-pacotes-em-projetos-python-com-o-pip/), basta executar o seguinte comando no terminal do próprio PyCharm:

`pip install requests`

![Instalando biblioteca requests](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/instalando-biblioteca-requests.png)

[  ![Python - Orientação a objetos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/python.svg)   Curso Python - Orientação a objetos Conhecer o curso ](https://www.treinaweb.com.br/curso/python-orientacao-a-objetos)

## 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](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/tw-dev-server-executando.png)

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](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/cadastrando-dados-api.png)

## 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):

```python
import requests

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

```

[  ![Django - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/django.svg)   Curso Django - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/django-fundamentos)

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:

```python
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](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/dados-retornados-api.png)

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:

```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](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/convertendo-resposta-api.png)

## 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:

```python
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](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/filtrando-dados-api.png)

## 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á! :D

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/BANNER-BLOG-2-2.jpg) ](https://api.whatsapp.com/send/?phone=5544988609539&text=Olá,+li+o+artigo+no+blog+e+gostaria+de+saber+mais+sobre+a+TreinaWeb.)

- [ #API ](https://www.treinaweb.com.br/blog/tag/api)
- [ #Python ](https://www.treinaweb.com.br/blog/tag/python)

Autor

 ![Fagner Pinheiro](//secure.gravatar.com/avatar/e622f7c7d686a0b11f8d977ce9725b67?d=mm)

## 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. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/fagner-pinheiro)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/08/07161700/gerenciamento-python-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     4 anos atrás

    ##  [ Empacotando e publicando pacotes Python no PyPi ](https://www.treinaweb.com.br/blog/empacotando-e-publicando-pacotes-python-no-pypi) 

     Neste artigo iremos aprender como funciona o processo de empacotar e distribuir nossos próprios pacotes Python no PyPi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/12/CAPA-PYTHON-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como trabalhar com data e hora no Python ](https://www.treinaweb.com.br/blog/como-trabalhar-com-data-e-hora-no-python) 

     Como trabalhar com data e hora no Python com Datetime. No decorrer deste artigo, veremos exemplos de como utilizar o módulo datetime...

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/consumindo-api-python-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     6 anos atrás

    ##  [ Consumindo APIs com Python - Parte 2 ](https://www.treinaweb.com.br/blog/consumindo-apis-com-python-parte-2) 

     Veja neste artigo como consumir APIs com Python.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/PUB-DEV-400x280.jpg)  [ Flutter ](https://www.treinaweb.com.br/blog/categoria/flutter) 

     4 anos atrás

    ##  [ Gerenciador de pacotes Dart e Flutter ](https://www.treinaweb.com.br/blog/gerenciador-de-pacotes-dart-e-flutter) 

     Saiba o que é o gerenciador de pacotes Dart e Flutter, como utilizar um pacote, biblioteca instalada por ele e sobre o pubspec.yaml.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/c-sharp-consumindo-apis-com-flurl-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ C# - Consumindo APIs com Flurl ](https://www.treinaweb.com.br/blog/c-consumindo-apis-com-flurl) 

     Veja como consumir dados de uma API no C#, utilizando a biblioteca Flurl.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/04/LAYOUT-FLUTTER-RESPONSIVO-400x280.png)  [ Flutter ](https://www.treinaweb.com.br/blog/categoria/flutter) 

     5 anos atrás

    ##  [ Como construir um layout Flutter responsivo ](https://www.treinaweb.com.br/blog/como-construir-um-layout-flutter-responsivo) 

     Neste artigo veremos algumas das abordagens e widgets que são usados no desenvolvimento de aplicativos responsivos com Flutter .

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/como-instalar-o-java-e-nosso-primeiro-exemplo-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Conheça o recurso de Records no Java ](https://www.treinaweb.com.br/blog/conheca-o-recurso-de-records-no-java) 

     Neste artigo, vamos aprender sobre o recurso de Records no Java. Veremos como utilizar esse recurso, suas vantagens e desvantagens.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/11/ARTIGO-DART-400x280.jpg)  [ Dart ](https://www.treinaweb.com.br/blog/categoria/dart) 

     4 anos atrás

    ##  [ Guia da linguagem dart ](https://www.treinaweb.com.br/blog/guia-da-linguagem-dart) 

     Nesse guia da linguagem Dart você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação Dart.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/05/12150130/MATERIAL-DESIGN-400x280.png)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     7 anos atrás

    ##  [ O que é Material Design? ](https://www.treinaweb.com.br/blog/o-que-e-material-design) 

     Se você deseja criar rapidamente aplicações bonitas e utilizáveis, dê uma conferida no Material Design.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/13172051/CORS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     7 anos atrás

    ##  [ O que é CORS e como resolver os principais erros ](https://www.treinaweb.com.br/blog/o-que-e-cors-e-como-resolver-os-principais-erros) 

     Nesse artigo vamos entender o que é CORS, quais os principais erros relacionados com ele, suas principais causas e como resolve-los corretamente.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ Gerando APIs clients com as ferramentas de OpenAPI do .NET ](https://www.treinaweb.com.br/blog/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net) 

     Aprenda como gerar APIs clientes com a global tool Microsoft.dotnet-openapi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/ASP-NET-ODATA-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Adicionando OData em uma API ASP.NET Core ](https://www.treinaweb.com.br/blog/adicionando-odata-em-uma-api-asp-net-core) 

     OData é um padrão de boas práticas para a criação de API. Veja os recursos que este padrão fornece para uma API ASP.NET Core.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **05h 15min 07s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
