Este projeto desenvolve uma API para um sistema de PDV (Ponto de Venda), com foco na gestão de categorias, usuários e autenticação.
- Node.js
- PostgreSQL
- npm (Node Package Manager)
- Ter o Node.js instalado
- Ter o PostgreSQL instalado e configurado
- Ter o npm instalado globalmente
git clone https://github.com/seu-usuario/seu-repositorio.git
cd seu-repositorionpm installCrie um arquivo `.env` na raiz do projeto e defina as variáveis de ambiente:
DATABASE_URL=postgres://seu_usuario:sua_senha@host_do_postgresql:5432/nome_do_seu_banco
ACCESS_TOKEN_SECRET=sua_chave_secreta
PORT=3000
Crie o banco de dados `pdv` no PostgreSQL e execute as migrações e seeds:
npx knex migrate:latest
npx knex seed:run
pdv-api/
├── config/
│ └── database.js
├── controllers/
│ ├── categoryController.js
│ └── userController.js
├── middlewares/
│ └── authMiddleware.js
├── migrations/
│ ├── timestamp_create_usuarios_table.js
│ └── timestamp_create_categorias_table.js
├── routes/
│ ├── categoryRoutes.js
│ └── userRoutes.js
├── seeds/
│ └── timestamp_seed_categorias.js
├── src/
│ └── index.js
├── knexfile.js
├── .env
├── .gitignore
└── package.json
- Substitua `seu-usuario`, `sua_senha`, `host_do_postgresql` e `nome_do_seu_banco` pelas suas credenciais de banco de dados.
- A variável `ACCESS_TOKEN_SECRET` deve ser uma string única e segura para gerar tokens de autenticação.
- O projeto utiliza o Knex.js para gerenciar migrações e seeds do banco de dados.
Método: POST
URL: /usuarios/register
Body (JSON):
{
"nome": "Seu Nome",
"email": "seuemail@exemplo.com",
"senha": "suaSenha"
}Resposta:
{
"id": 1,
"message": "Usuário cadastrado com sucesso"
}Método: POST
URL: /usuarios/login
Body (JSON):
{
"email": "seuemail@exemplo.com",
"senha": "suaSenha"
}Resposta:
{
"accessToken": "token_jwt_aqui"
}Método: GET
URL: /usuarios/profile
Headers:
`Authorization: Bearer <token_jwt_aqui>`
Resposta:
{
"id": 1,
"nome": "Seu Nome",
"email": "seuemail@exemplo.com"
}Método: PUT
URL: /usuarios
Headers:
`Authorization: Bearer <token_jwt_aqui>`
Body (JSON):
{
"nome": "Nome Atualizado",
"email": "emailatualizado@exemplo.com",
"senha": "novaSenha"
}Resposta:
{
"message": "Perfil atualizado com sucesso"
}Método: GET
URL: /categorias
Resposta:
[
{ "id": 1, "descricao": "Informática" },
{ "id": 2, "descricao": "Celulares" },
{ "id": 3, "descricao": "Beleza e Perfumaria" },
{ "id": 4, "descricao": "Mercado" },
{ "id": 5, "descricao": "Livros e Papelaria" },
{ "id": 6, "descricao": "Brinquedos" },
{ "id": 7, "descricao": "Moda" },
{ "id": 8, "descricao": "Bebê" },
{ "id": 9, "descricao": "Games" }
]Para executar a API em modo de desenvolvimento, utilize o seguinte comando:
npm run devA API estará acessível em http://localhost:3000.
- Substitua `suaSenha` por sua senha real nos exemplos acima.
- O token JWT recebido no login deve ser utilizado na autorização para acessar os endpoints privados (`/usuarios/profile` e `/usuarios`).
- Para mais informações sobre como usar a API, consulte a documentação do código-fonte.
- Certifique-se de ter iniciado a API em modo de desenvolvimento, conforme instruído na seção "Executando a API".
- Substitua `<token_jwt_aqui>` pelo token JWT real obtido após o login de um usuário.
- Abra o Insomnia e crie uma nova requisição.
- Defina o método como POST e a URL como http://localhost:3000/usuarios/register.
- No cabeçalho "Body", selecione a opção "JSON" e cole o seguinte payload:
{
"nome": "Seu Nome",
"email": "seuemail@exemplo.com",
"senha": "suaSenha"
}- Clique em "Enviar" para realizar a requisição.
- A resposta deve conter o código de status 201 e um JSON com o ID do usuário cadastrado e a mensagem "Usuário cadastrado com sucesso".
- Crie uma nova requisição no Insomnia.
- Defina o método como POST e a URL como http://localhost:3000/usuarios/login.
- No cabeçalho "Body", selecione a opção "JSON" e cole o seguinte payload:
{
"email": "seuemail@exemplo.com",
"senha": "suaSenha"
}- Clique em "Enviar" para realizar a requisição.
- A resposta deve conter o código de status 200 e um JSON com o token JWT no campo "accessToken". Armazene este token para as próximas requisições.
- Crie uma nova requisição no Insomnia.
- Defina o método como GET e a URL como http://localhost:3000/usuarios/profile.
- No cabeçalho "Authorization", adicione o tipo de autenticação como Bearer e o token JWT obtido no login no campo "Token".
- Clique em "Enviar" para realizar a requisição.
- A resposta deve conter o código de status 200 e um JSON com as informações do perfil do usuário, incluindo ID, nome e email.
- Crie uma nova requisição no Insomnia.
- Defina o método como PUT e a URL como http://localhost:3000/usuarios.
- No cabeçalho "Authorization", adicione o tipo de autenticação como Bearer e o token JWT obtido no login no campo "Token".
- No cabeçalho "Body", selecione a opção "JSON" e cole o seguinte payload, substituindo os valores com as suas novas informações:
{
"nome": "Nome Atualizado",
"email": "emailatualizado@exemplo.com",
"senha": "novaSenha"
}- Clique em "Enviar" para realizar a requisição.
- A resposta deve conter o código de status 200 e um JSON com a mensagem "Perfil atualizado com sucesso".
- Crie uma nova requisição no Insomnia.
- Defina o método como GET e a URL como http://localhost:3000/categorias.
- Clique em "Enviar" para realizar a requisição.
- A resposta deve conter o código de status 200 e um array JSON com a lista de categorias, incluindo ID e descrição.
- Faça um fork do repositório do projeto.
- Crie uma nova branch: `git checkout -b minha-nova-feature`.
- Faça suas alterações e commits: `git commit -m 'Adiciona minha nova feature'`.
- Envie as alterações para o seu fork: `git push origin minha-nova-feature`.
- Abra um Pull Request para o repositório original.
Este projeto está licenciado sob a MIT License. Consulte o arquivo LICENSE para mais detalhes.
Este guia completo fornece instruções detalhadas sobre como testar os endpoints da API PDV usando o Insomnia.
Gostaria de expressar meus sinceros agradecimentos aos colegas que me ajudaram a criar este projeto:
A colaboração e apoio de vocês foram essenciais para o sucesso deste projeto. Muito obrigado!