Apis escolhidas
Passos que serão executados para cada api:
- Descrição da api
- Formas de autenticação
- Recuperação de alguns recursos
- Criação de alguns recursos
- Verificar a existência de outros verbos HTTP
API do GitHub
Na api do github é possível manusear cada parte de um projeto programaticamente, por exemplo : criar repositórios, criar issues, comentar, buscar por dados de projetos, dados de usuários e por aí vai. Muito vasta por sinal.
Endpoints localizados em : GitHub
Formas de autenticação
Para algumas operações que faremos precisamos estar autenticados de alguma forma na api do github, para isso temos algumas opções:
A Personal Token e Basic Autentication são praticamente iguais, as duas necessitam do username como campo, mas a primeira forma usar um token que é criado na página de configurações do usuário e a segunda usa a própria senha do dele.
Vamos aos exemplos:
Personal Token
import requests
auth = requests.http_method("https://api.github.com/user",
auth=("SEU_USUARIO","SEU_TOKEN"))
Oura forma usando o Personal Token
import requests
# Criando um cabeçalho com o token criado na sua conta do github
header_authorization = {"Authorization":"token {}".format(SEU_TOKEN)}
# Fazendo a requisição pro endpoint passando o cabeçalho
#com o token de autenticação
response = requests.http_method(endpoint,
headers=header_authorization)
Basic Authentication
import requests
auth = requests.http_method("https://api.github.com/user",
auth=("SEU_USUARIO","SUA_SENHA"))
E nas duas chamadas retornará os mesmos dados. Para uma visualização pública desses dados acesse Meu perfil.
Usando os dados da requisição autenticada virá mais dados, mas por questões de segurança, foram omitidos.
Vamos tentar algumas operações
Obtendo dados de um usuário
- Autenticação : Para obter dados sensíveis SIM , mas também há consulta pública
- Endpoint :
htts://api.github.com/users/:username
- Método HTTP : GET
>> import requests
>> url_user = "htts://api.github.com/users/{}"
>> user = url_user.format("Marlysson")
>> response = requests.get(user).json()
>> nome = response.get("name")
Marlysson Silva
>> repos = response.get("public_repos")
34
Aqui você pode ver a lista completa das propriedades permitidas na consulta pública
Mas nem só de consultas públicas vive uma api, principalmente a do github. Como foi visto nos endpoints do github são vários e vários recursos a serem trabalhados..
Criação de um repositório
Para essa parte precisamos estar autenticados na api, para isso vamos usar a segunda forma de autenticação da Personal Token, passando ela no cabeçalho da requisição.
Dados necessários para fazer a requisição:
- Autenticação : Sim
- Endpoint :
https://api.github.com/user/repos
- Método HTTP : POST
- Corpo da requisição de entrada : Dados
import requests
import json
endpoint = "https://api.github.com/user/repos"
#Criando o cabeçalho de autorização
header_auth = {"Authorization":"token {}".format("SEU_TOKEN_AQUI")}
corpo = json.dumps({"name":"Novo-Projeto"})
# Criando a requisição. Passando os dados de input para o endpoint
# e passando o cabeçalho de autorização
response = requests.post(endpoint,data=corpo,headers=header_auth)
headers = response.headers
dados = response.json()
print("Status da requisiçao: {}".format(headers.get("Status")))
print("Localização na api: {}".format(response.headers.get("Location")))
print("Url do proejto: {}".format(dados.get("html_url")))
E como retorno da criação do recurso temos:
Status da requisição : 201 Created
Localização na api: https://api.github.com/repos/Marlysson/Novo-projeto
Url do projeto: https://github.com/Marlysson/Novo-projeto
Uso de outros verbos HTTP
A api suporta vários outros verbos HTTP,e são eles:
- HEAD ( Usado para obter informações dos cabeçalhos das requisições )
- PATCH ( Usado para atualizar alguns atributos do recurso, mas como é um verbo incomum nas requisições HTTP, a api também suporta o POST )
- PUT ( Usado para substituir recursos ou coleções existentes )
- DELETE ( Deletar recursos )
Api do Json Placeholder
É um serviço para desenvolvedores testarem como suas integrações se comportarão quando for feita o deploy final, isso é feito através de acesso à dados fictícios providos pelo serviço. A ferramenta trabalha com os seguintes recursos:
Posts
,Comments
,Albums
,Photos
,Todos
,Users
Para exemplificar vamos trabalhar com a entidade Todos
.
Formas de autenticação
Não possui, pois é somente para tratamento de alguns recursos web.
Algumas operações
Recuperação de itens
Recuperando uma entidade Todos
>>> import requests
>>> response = requests.get("https://jsonplaceholder.typicode.com/todos/1")
>>> response.json()
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
Criação de recursos
>>> import requests
>>> url_todos = "https://jsonplaceholder.typicode.com/todos
>>> data = {"userId":1, "title":"Nova tarefa", "completed":False}
>>>
>>> requests.post(url_todos,data=data).json()
{
"userId": 1,
"id": 201,
"title": "Nova tarefa",
"completed": False
}
Uso de outros métodos
Essa api suporta mais 3 métodos HTTP, e são eles:
- PUT (
requests.put(url_resource,data)
) - PATCH (
requests.patch(url_resource,data)
) - DELETE (
requests.delete(url_resource)
)
Api Via cep
Api responsável por retornar os dados geográficos referentes à um dado cep.
Formas de autenticação
Não possui, requisições públicas
Verificando operações sobre os recursos
Recuperando um cep
>>> url_cep = "https://viacep.com.br/ws/{cep}/json/"
>>> cep = "01001000"
>>> resource = url_via_cep.format(cep=cep)
>>> requests.get(resource).json()
{
"cep": "01001-000",
"logradouro": "Praça da Sé",
"complemento": "lado ímpar",
"bairro": "Sé",
"localidade": "São Paulo",
"uf": "SP",
"unidade": "",
"ibge": "3550308",
"gia": "1004"
}
Não possui métodos adicionais