API construída como parte do requisito de avaliação do primeiro módulo da pós tech FIAP.
A API contempla os seguintes requisitos:
- Cadastro de usuários com perfil (Admin, Cliente ou vendedor);
- Login de usuário por CPF e senha;
- Listagem de perfis;
- Cadastro, Alteração, Listagem e Edição de categorias de produtos;
- Cadastro, alteração, exclusão e listagem de produtos;
- Listagem de produtos por categoria;
- Criação e listagem de pedidos;
- Listagem de pedidos por usuário;
- Atualização de status dos pedidos para: preparando, completo e finalizado.
Pré requistos:
- Ter o docker instalado na máquina;
- Insomnia para realizar testes nos endpoints.
Inicializando
Ir na pasta do projeto, abrir um prompt de comando e digitar:
docker-compose up -d
O comando acima irá subir o postgres e também o processo da API. Caso prefira usar um servidor do postgres em algum outro servidor, basta ajustar os parâmetros do arquivo .env
que se encontra na raiz do projeto.
Para verificar se está rodando corretamente, abra o browser e vá no endereço: http://localhost:8000/swagger/index.html.
Para facilitar os testes, estou disponibilizando a collection a ser importada no insomnia. Faça o download da collection clicando aqui. Oura opção é clicar diretamente neste botão:
Para importar a collection, abra o insomnia e clique na opção import conforme imagem abaixo.
Para realizar o login inicial, utilize o usuário pré-cadastrado conforme a imagem abaixo.
- CPF: 11111111111
- Senha: admin123
Para realizar cadastro de usuários não é necessário estar logado na aplicação, porém é preciso passar um perfil válido que pode ser consultado na rota de perfis.
Temos um CRUD (Create, Read, Update, Delete) de categorias conforme imagem abaixo.
Nas rotas de produtos temos os métodos para listagem, cadastro, exclusão e atualização. Dentre eles, apenas o método de listagem não obriga que o usuário esteja autenticado, para todos os outros, o usuário precisa estar autenticado com perfil de admin.
Na rota de produtos também é possível buscar produtos por categoria. Para isso, é preciso passar como parâmetro o ID da categoria (que pode ser consultado na rota de listagem de categorias).
Para todas as rotas de pedidos, o usuário precisa estar autenticado. A rota de listagem de pedidos permite listar todos os pedidos (apenas para Admin e Vendedor), ou listar apenas pedidos epecíficos por usuário. Caso o usuário logado seja um Cliente, ao realizar a chamada para esta rota, serão listados apenas seus próprios pedidos.
Também temos as rotas que alteram o status do pedido para: Preparando, Completo e finalizado.