Kaio stefan Campos Nunes
Caio Cordeiro Jácome
Eduardo de Mello Portilho
Esta API RESTful realiza o cadastro de clientes, pedidos e aplica regras de desconto nas taxas de entrega. A API foi desenvolvida em Java com Spring Boot, empacotada em um container Docker e está disponível no Docker Hub.
- Docker: Para executar o container da API.
- Postman: Para testar os endpoints da API.
- Git: Para clonar o repositório do código-fonte.
Clone o repositório com o código-fonte da API:
git clone https://github.com/LDrawe/trabalho-extra.git
cd trabalho-extraPara baixar a imagem Docker do Docker Hub e executar a API, use os seguintes comandos:
docker pull kaiostefan/trabalho-extra:version1.0
docker run -p 8080:8080 kaiostefan/trabalho-extra:version1.0Para facilitar o teste dos endpoints da API, uma coleção Postman foi fornecida. Siga os passos abaixo para importá-la:
- Abra o Postman.
- Clique em File > Import no canto superior esquerdo.
- Escolha a opção Upload Files e selecione o arquivo da coleção Postman presente na pasta raíz deste projeto.
- Método:
POST - Endpoint:
/clientes - Descrição: Cria um novo cliente.
- Corpo da Requisição (exemplo):
{
"nome": "Caio",
"tipo": "Prata",
"fidelidade": 100.0,
"logradouro": "Rua A",
"bairro": "Centro",
"cidade": "São Paulo"
}- Resposta Esperada (exemplo):
{
"id": 0,
"nome": "Caio",
"tipo": "Prata",
"fidelidade": 100.0,
"logradouro": "Rua A",
"bairro": "Centro",
"cidade": "São Paulo"
}- Método:
POST - Endpoint:
/pedidos - Descrição: Cria um novo pedido associado ao cliente criado.
- Corpo da Requisição (exemplo):
{
"clienteId": 1,
"data": "2024-09-27",
"itens": [
{
"nome": "Pizza",
"quantidade": 2,
"valorUnitario": 35.50,
"tipo": "Alimentação"
}
]
}- Resposta Esperada: Status 201
- Método:
GET - Endpoint:
/pedidos/{pedidoId} - Descrição: Retorna as informações do pedido a partir do ID.
- Resposta Esperada (exemplo):
{
"cliente": {
"id": 0,
"nome": "Caio",
"tipo": "Prata",
"fidelidade": 100.0,
"logradouro": "Rua A",
"bairro": "Centro",
"cidade": "São Paulo"
},
"taxaEntrega": 0.0,
"itens": [
{
"nome": "Pizza",
"quantidade": 2,
"valorUnitario": 35.5,
"tipo": "Alimentação",
"valorTotal": 71.0
}
],
"cuponsDescontoEntrega": [],
"descontoConcedido": 0.0,
"valorPedido": 71.0
}- Método:
POST - Endpoint:
/pedidos/{pedidoId}/processar-descontos - Descrição: Aplica descontos ao pedido.
- Parâmetros: pedidoId (Integer)
- Resposta Esperada: Status 201
- Método:
GET - Endpoint:
/pedidos/{pedidoId} - Descrição: Retorna as informações do pedido atualizado após a aplicação dos descontos.
- Resposta Esperada (exemplo):
{
"cliente": {
"id": 0,
"nome": "Caio",
"tipo": "Prata",
"fidelidade": 100.0,
"logradouro": "Rua A",
"bairro": "Centro",
"cidade": "São Paulo"
},
"taxaEntrega": 0.0,
"itens": [
{
"nome": "Pizza",
"quantidade": 2,
"valorUnitario": 35.5,
"tipo": "Alimentação",
"valorTotal": 71.0
}
],
"cuponsDescontoEntrega": [
{
"nomeMetodo": "Desconto por Bairro",
"valorDesconto": 2.0
},
{
"nomeMetodo": "Desconto por Tipo de Cliente",
"valorDesconto": 2.0
},
{
"nomeMetodo": "Parcial - Desconto por Tipo de Item",
"valorDesconto": 6.0
}
],
"descontoConcedido": 10.0,
"valorPedido": 71.0
}