Como Usar Uma API Em Python

by Felipe Esteves in Circuits > Computers

761 Views, 0 Favorites, 0 Comments

Como Usar Uma API Em Python

API.png

Esse projeto tem o objetivo de apresentar:

- o que é uma API;

- O que é um arquivo .JSON;

- O que é uma biblioteca e como usá-la;

- Programação.

Supplies

  • Python 3;
  • Pip (Integrado junto a instalação do Python);
  • Python requests (Ensinado a baixar na sessão de bibliotecas do Python);
  • Conhecimento básico de Python.

Caso não tenha Python no seu computador clique aqui para baixar

O Que É Uma API

Funcionamento de uma API.jpg

API significa Application Programming Interface (interface de programação de aplicativos), ou seja, ela é uma interface para auxiliar na comunicação entre dois ou mais aplicativos.

Por exemplo: o aplicativo do clima precisa comunicar com a base de dados para mostrar a temperatura, pois não é capaz de medir por si só, então precisa usar uma API para efetuar esta comunicação

Para saber mais clique aqui (Wikipédia).

Bibliotecas Do Python

Para facilitar a execução e a complexidade do código, utilizando bibliotecas. Elas vão intuitivamente acelerar o desenvolvimento.

Bibliotecas usadas : Request e Json

A biblioteca json é do repositório padrão do python, porém request não é, então é necessário instalá-la, para instalar uma biblioteca primeiro precisamos utilizar o prompt de comando do seu computador. Digite o comando "pip install" e complemente com o nome de sua biblioteca.

Ficará assim:

pip intall requests

Arquivo JSON

JSON é um tipo de arquivo para troca de informação, significa JavaScript Object Notation, mas é possível usá-lo em outras linguagens de programação. Ele tem uma sintaxe muito simples baseando-se em pares de nome e valor seguido de vírgula, este valor pode ser um texto (string), um número (int para inteiros e float para fração) ou um valor booleano (bool, verdadeiro ou falso):

{  
  "string" : "Texto é entre aspas",
  "Número" : 18,
  "float" : 1.62,
  "booleano" : true
}

Para melhorar na organização é possível separar as informações em objetos que funcionam como caixas para guardar os dados, objetos podem possuir dados de mesmo nome. Eles são estruturados da seguinte forma:

{
  "Objeto1":{
    "dado1" : "texto",
    "dado2" : "texto"
  },
  "Objeto2" : {
    "dado1" : "texto",
    "dado2" : "texto"
  }
}

Para saber mais clique aqui.(O site deles está disponível em inglês.)

Get Requests O Que São

A biblioteca request, como o nome diz, é aquela que solicita as informações da API quando requisitado pelo código, este envia ao servidor um requerimento GET e é atendido com os dados de sua API (os formatos mais usados para esta resposta são HTML, JSON, XML entre outros). Para utilizar essa ferramenta é necessário que instale a biblioteca no prompt de comando com o seguinte código :

pip install requests

Com tudo pronto, implemente na programação da seguinte forma :

import requests

resposta = requests.get('https://siteficticio')

print(resposta)


Desta maneira será solicitado ao site que envie as informações da API.

A resposta será apenas o código de status do pedido, os mais importantes são: 200 (pedido respondido), 400 (pedido invalido), 404 (dado não encontrado), 503 (serviço não disponível).

Programação

A primeira coisa a fazer em um código de Python é iniciar as bibliotecas, use o comando import para isto.

Ficará assim:

import requests
import json

Para solicitar alguma informação da API recorra ao comando GET da biblioteca requests:

resposta = requests.get("https://siteficticio.com")

Em seguida é necessário saber se a informação foi recebida com sucesso, então compare o código de status da resposta com:

if resposta.status_code == 200:
	print("Informação recebida com sucesso")

Caso a resposta da solicitação contenha alguma mensagem de erro, ou seja, o código de resposta seja diferente de 200, informe ao usuário com:

else:
	print(f"Ocorreu um erro {resposta.status_code} com seu pedido")

Então juntando tudo fica assim:

import requests
import json

resposta = requests.get("https://siteficticio.com")

if resposta.status_code == 200:
	print("Informação recebida com sucesso")
else:
	print(f"Ocorreu um erro {resposta.status_code} com seu pedido")

Note que o código acima não vai funcionar por conta do endereço especificado não existir.

Open Weather Map

Para este projeto é recomendado o uso openweathermap.org que tem um plano gratuito, aqui o site fornecerá uma chave para o uso de sua API.

Para pegar sua chave é necessário criar uma conta. Ao criar uma conta clique no canto superior esquerdo e selecione "My API keys". Note que demora em torno de uma hora para a chave poder ser usada.

Para chamar e conversar com o servidor é necessário adicionar depois do link os argumentos para que ele saiba o que responder.

O link ficará assim:

https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={Chave da API}

No link acima o que está entre chaves deve ser substituído pelos argumentos, outro problema é que a resposta deste pedido será devolvida no sistema imperial (americano), para resolve-lo colocamos o parâmetro "&units=metric":

https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&units=metric&appid={Chave da API}

Agora use o código em Python para chamar esta API:

import requests
import json

resposta = requests.get("https://api.openweathermap.org/data/2.5/weather?lat=-23.53&lon=-46.62&units=metric&appid={Chave da API}")

if resposta.status_code == 200:
	print("Informação recebida com sucesso")
else:
	print(f"Ocorreu um erro {resposta.status_code} com seu pedido")

O código acima recebe os dados porém não faz nada com as informações então coloque a resposta em alguma variável, para isto utilize a função "json()".

clima = resposta.json()

Agora que as informações estão em uma variável use "print(clima)". Porém não terá indentação então será necessário usar o comando "json.dumps()" com o parâmetro "indent=" ". Note que o espaço em branco que será a indentação, mas é possível usar "\t" para indentar com tab.

Ficará assim:

print(json.dumps(clima, indent="\t"))

O código final ficará assim:

import requests
import json

resposta = requests.get("https://api.openweathermap.org/data/2.5/weather?lat=-23.53&lon=-46.62&units=metric&appid={Chave da API}")

if resposta.status_code == 200:
	print("Informação recebida com sucesso")
	clima = resposta.json()
	print(json.dumps(clima, indent="\t"))
else:
	print(f"Ocorreu um erro {resposta.status_code} com seu pedido")

Para entender mais da API do Open Weather Map clique aqui. (O site deles está disponível em inglês.)