SOBRE O DESENVOLVIMENTO
A API foi desenvolvida com :
As ferramentas escolhidas dão agilidade no desenvolmento. A arquiteura do Django permite criar end-point que implementam rest full .
Listagem (GET)
Criação (POST)
Atualização (PUT)
Remoção (DELETE)
e além disso possui uma interface onde é possível fazer testes diretamento no browser. O versionamento de banco de dados fica transparente com uso de migrations.
Para atendimento dos requisitos foram feitos os modelos abaixo:
Ao fazer o build da aplicação o arquivo pokemon.json é importado para o banco de dados.
BUILD DA API
Ferramentas necessárias para build:
Executando API:
Após fazer as instalações necessárias faça os seguintes passos via terminal:
Teste API:
Não é necessário autenticação na API. O Django tem uma interface que pode ser usado para teste diretamento do browser.
Para testar basta acessar a url:
http://127.0.0.1:8001/api/pokemons/
Ao acessar a url acima o sistema exibe as rotas disponíveis com auxílio da interface do DJANGO.
"type": "http://127.0.0.1:8001/api/pokemons/type/",
"pokemon": "http://127.0.0.1:8001/api/pokemons/pokemon/",
"trainer": "http://127.0.0.1:8001/api/pokemons/trainer/",
"team": "http://127.0.0.1:8001/api/pokemons/team/"
Listar Tipos
Método GET:
http://127.0.0.1:8001/api/pokemons/type/
Response:
Exemplo de resultado:
[
{
"id": 6,
"name": "bug"
},
{
"id": 18,
"name": "dark"
}
]
Listar Pokemons
Método GET
http://127.0.0.1:8001/api/pokemons/pokemon/
Response:
Code:200
Exemplo de resultado:
[
{
"id": 460,
"name": "abomasnow",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/460.png"
},
{
"id": 63,
"name": "abra",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/63.png"
},
{
"id": 359,
"name": "absol",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/359.png"
}
]
Filtrar Pokemons
Por nome
Método GET
http://127.0.0.1:8001/api/pokemons/pokemon/?name={name}
Exemplo de URL:
http://127.0.0.1:8001/api/pokemons/pokemon/?name=pikachu
Response:
Code:200
Exemplo de resultado:
[
{
"id": 25,
"name": "pikachu",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png"
}
]
Por Tipo
Método GET
http://127.0.0.1:8001/api/pokemons/pokemon/?name={name}
Exemplo de URL:
http://127.0.0.1:8001/api/pokemons/pokemon/?type=eletric
Response:
Code:200
Exemplo de resultado:
[
{
"id": 460,
"name": "abomasnow",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/460.png"
},
{
"id": 63,
"name": "abra",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/63.png"
},
{
"id": 359,
"name": "absol",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/359.png"
}
]
Detalhe de um Pokemons
Método GET:
http://127.0.0.1:8001/api/pokemons/pokemon/{id}
Response:
Code:200
Exemplo de resultado:
{
"id": 25,
"name": "pikachu",
"type_list": [
{
"id": 8,
"name": "electric"
}
],
"height": 0.4,
"weight": 6.0,
"xp": 112,
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png",
"types": [
8
]
}
Criar Treinador
Método POST
http://127.0.0.1:8001/api/pokemons/pokemon/
Media type: application/json
Exemplo de Body
{
"name": "Treinador 1"
}
Response:
Code:201
Exemplo de resultado:
{
"id": 1,
"name": "Treinador 1"
}
Criar Time
Método POST
http://127.0.0.1:8001/api/pokemons/team/
Media type: application/json
Exemplo de Body
{
"name": "Meliuz Team",
"trainer": 1,
"pokemons": [1,2,3,4,5,6]
}
Response:
Code:201
Exemplo de resultado:
{
"id": 1,
"name": "Meliuz Team",
"trainer_obj": {
"id": 1,
"name": "Treinador 1"
},
"pokemons_list": [
{
"id": 1,
"name": "bulbasaur",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png"
},
{
"id": 2,
"name": "ivysaur",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/2.png"
},
{
"id": 3,
"name": "venusaur",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/3.png"
},
{
"id": 4,
"name": "charmander",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/4.png"
},
{
"id": 5,
"name": "charmeleon",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/5.png"
},
{
"id": 6,
"name": "charizard",
"image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/6.png"
}
],
"trainer": 1,
"pokemons": [
1,
2,
3,
4,
5,
6
]
}
EXCEÇÕES
Nome do time com menos que 5 carateres
Método POST
http://127.0.0.1:8001/api/pokemons/team/
Media type: application/json
Exemplo de Body
{
"name": "mel",
"trainer": 1,
"pokemons": [1,2,3,4,5,6]
}
Response:
Code:400
{
"name": [
"Ensure this field has at least 5 characters."
]
}
Time com mais de 6 pokemons
Método POST
http://127.0.0.1:8001/api/pokemons/team/
Media type: application/json
Exemplo de Body
{
"name": "Cash back team",
"trainer": 2,
"pokemons": [10,11,12,13,14,15,16,17]
}
Response:
Code:400
{
"pokemons": [
"Can't add more than 6 pokemons"
]
}
Content type
Image
Digest
Size
511.4 MB
Last updated
almost 7 years ago
docker pull paulolopes/poke-api