API de Produtos
Construa uma API RESTful para uma loja online. A API é organizada em torno de dois recursos principais: product e order.
flowchart LR
subgraph api [Camada confiável]
gateway --> account
gateway --> auth
account --> db@{ shape: cyl, label: "Banco de dados" }
auth --> account
gateway e5@==> product:::red
gateway e6@==> order
product e2@==> db
order e3@==> db
order e4@==> product
end
internet e1@==>|requisição| gateway
e1@{ animate: true }
e2@{ animate: true }
e3@{ animate: true }
e4@{ animate: true }
e5@{ animate: true }
e6@{ animate: true }
classDef red fill:#fcc
click product "#product-api" "API de produtos" Atenção
Para consumir a API, o usuário precisa estar autenticado.
API de produtos
A API de produtos deve expor os seguintes endpoints:
POST /products
Cria um novo produto.
GET /products
Obtém todos os produtos.
GET /products/{id}
Obtém um produto pelo seu ID.
Adicionais
Funcionalidades adicionais são bem-vindas, como:
- Busca de produtos por nome (com "like");
- Autorização por papel (admin, user):
- Admin pode criar, atualizar e excluir produtos;
- User pode apenas criar pedidos;
- Validação das entradas;
- Tratamento de erros.
Desejável
- Observabilidade (métricas, logs), veja Prometheus e Grafana;
- Banco de dados em memória (sugestão: microsserviço de produtos), veja Redis;
- Documentação Swagger, veja SpringDoc.