API FLask desenvolvida para o teste da vaga de backend da KaBuM!
Você deve baixar ou clonar o projeto deste repositório (FlaskFrete)
Após baixar o projeto, será necessário criar um ambiente virtual (venv), para isso execute o seguite comando na pasta que baixou o projeto:
python -m venv venv (nome do ambiente virtual)
Após vamos ativar-lá:
Para sistema operacional linux:
cd venv (nome do seu ambiente virtual criado)
source bin/activate
Para sistemas windows
cd Scripts
activate
Com o ambiente virtual instalado e aberto, vamos instalar os pacotes (estão no arquivo requirements.txt)
Na pasta em que o arquivo se encontra, execute o seguinte comando para dar inicio:
pip install -r requirements.txt
Aguarde a instalação de todos os pacotes
Após isso, vamos executar o projeto para que a API funcione. Rode o seguinte comando na pasta raiz do projeto:
python app.py
Se tudo correr bem, os seguintes log's apareceram no seu terminal:
bom, com tudo funcionando vamos para os testes.
O teste pode ser feito a partir do Swagger onde se encontram todos os endpoints disponíveis da API.
Para testar a API e suas funcionalidades pelo Swagger é necessário apenas acessar a rota http://localhost:5000/api/doc em seu navegador (com o projeto já rodando, vide passo anterior).
Você irá ver a seguinte tela:
- Para iniciar os testes, é preciso criar as transporadoras com as informações que você deseja em POST /shippings
Exemplo de payload para cadastrar uma transportadora
{
"carrier_name":"JADLOG",
"constant_freight_calc":0.3,
"minimum_height":10,
"maximum_height":100,
"minimum_width":4,
"maximum_width":200,
"delivery_time":4
}
- Você também pode ver todas as transportadoras já criadas em GET /shippings
- Assim como também pode consultar ou deletar uma especifica que deseja em GET /shippings/ e DELETE /shippings/
Após as transporadoras estarem configuradas, podemos partir para o calculo do frete, na rota: POST /freight
Será necessário enviar um paylaod contendo as informações do pacote que deseja postar, neste formato:
{
"dimension":{
"heigth":102,
"width":40
},
"weight":400
}
e então o retorno será das transportadoras cadastradas que estão elegiveis para realizar a entrega. Caso nenhuma se encaixe, o retorno será uma lista vázia.
Exemplo de retorno:
[
{
"nome": "Entrega Ninja",
"valor_frete": 12.0,
"prazo_dias": 6.0
},
{
"nome": "Entrega KaBuM",
"valor_frete": 8.0,
"prazo_dias": 4.0
}
]
Caso fique em duvida em algum payload que necessite enviar na API, os modelos estão disponives logo abaixo das requisições