Skip to content

henrique77/api-quote

Repository files navigation

Quotes API

API de cotação de Frete construida utilizando Golang, Fiber Framework, Docker, MySQL e integração com API externa.

Executando a API

Usando o 'git clone' faça uma cópia do projeto e em seguida entre no diretório /api-quote A aplicação e o banco de dados MySQL foram configurados para executar no Docker, então após configurar o .env conforme o arquivo .env-example, execute:

$ docker compose up --build

Com isso a API já estará pronta para uso e rodando localmente na porta definida. Agora a API pode ser testada usando o Postman ou outra ferramenta de sua preferência

As rotas implementadas foram:

- POST   /v1/quote
- GET    /v1/metrics?last_quotes={?}

POST

A rota POST recebe os dados de entrada e realiza cotação com a API da Frete Rápido. Para essa rota é esperado um JSON de entrada como do exemplo:

{
   "recipient":{
       "address":{
           "zipcode":"29161376"
       }
   },
   "volumes":[
       {
           "category":7,
           "amount":2,
           "unitary_weight":5,
           "price":349,
           "sku":"abc-teste-123",
           "height":0.5,
           "width":0.3,
           "length":0.3
       },
       {
           "category":7,
           "amount":3,
           "unitary_weight":4,
           "price":556,
           "sku":"abc-teste-527",
           "height":0.7,
           "width":0.6,
           "length":0.15
       }
   ]
}

Como retorno é esperado um array de cotação como mostrado a seguir:

[
    {
        "name": "AZUL CARGO",
        "service": "Convencional",
        "deadline": 2,
        "price": 39.95
    },
    {
        "name": "PRESSA FR (TESTE)",
        "service": "Normal",
        "deadline": 0,
        "price": 63.66
    }
]

GET

A rota GET consulta as métricas das cotações armazenadas no banco de dados. Opcionalmente nessa rota pode ser passado o parametro last_quotes que seleciona a quantidade de cotações retornadas (ordem decrescente).

Como retorno é esperado um objeto com algumas métricas de cotações. Veja o exemplo:

{
   "results_per_carrier": {
       "AZUL CARGO": 2,
       "BTU BRASPRESS": 2,
       "JADLOG": 2,
       "PRESSA FR (TESTE)": 2,
       "RAPIDÃO FR (TESTE)": 2
   },
   "total_final_price": {
       "AZUL CARGO": 79.9,
       "BTU BRASPRESS": 191.98,
       "JADLOG": 224.16,
       "PRESSA FR (TESTE)": 127.32,
       "RAPIDÃO FR (TESTE)": 843.24
   },
   "average_final_price": {
       "AZUL CARGO": 39.95,
       "BTU BRASPRESS": 95.99,
       "JADLOG": 112.08,
       "PRESSA FR (TESTE)": 63.66,
       "RAPIDÃO FR (TESTE)": 421.62
   },
   "least_expensive_shipping": 39.95,
   "most_expensive_shipping": 421.62
}

Para mais detalhes e informações de uso, acesse a documentação da API no link abaixo: Obs.: O link considera que a porta da aplicação seja a 3000

http://localhost:3000/v1/swagger/index.html

Sobre mim

Sou Henrique Caires, desenvolvedor de software. Estou a disposição para dúvidas, esclarecimentos e sugestões. Me encontre no linkedin: Henrique Caires