Code Monkey home page Code Monkey logo

deploy_api_pdv's Introduction

PDV API

Descrição

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.

Tecnologias

  • Node.js
  • PostgreSQL
  • npm (Node Package Manager)

Requisitos

  • Ter o Node.js instalado
  • Ter o PostgreSQL instalado e configurado
  • Ter o npm instalado globalmente

Instalação

Clone o repositório:

git clone https://github.com/seu-usuario/seu-repositorio.git
cd seu-repositorio

Instale as dependências:

npm install

Configure o arquivo .env:

Crie 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

Configure o banco de dados:

Crie o banco de dados `pdv` no PostgreSQL e execute as migrações e seeds:

npx knex migrate:latest
npx knex seed:run

Estrutura do Projeto:


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

Observações:

  • 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.

Endpoints

Registrar Usuário

Método: POST
URL: /usuarios/register
Body (JSON):

{
  "nome": "Seu Nome",
  "email": "[email protected]",
  "senha": "suaSenha"
}

Resposta:

{
  "id": 1,
  "message": "Usuário cadastrado com sucesso"
}

Login de Usuário

Método: POST
URL: /usuarios/login
Body (JSON):

{
  "email": "[email protected]",
  "senha": "suaSenha"
}

Resposta:

{
  "accessToken": "token_jwt_aqui"
}

Obter Perfil do Usuário

Método: GET
URL: /usuarios/profile
Headers:
`Authorization: Bearer <token_jwt_aqui>`

Resposta:

{
  "id": 1,
  "nome": "Seu Nome",
  "email": "[email protected]"
}

Atualizar Perfil do Usuário

Método: PUT
URL: /usuarios
Headers:
`Authorization: Bearer <token_jwt_aqui>`

Body (JSON):

{
  "nome": "Nome Atualizado",
  "email": "[email protected]",
  "senha": "novaSenha"
}

Resposta:

{
  "message": "Perfil atualizado com sucesso"
}

Listar Categorias

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" }
]

Executando a API

Para executar a API em modo de desenvolvimento, utilize o seguinte comando:

npm run dev

A API estará acessível em http://localhost:3000.

Observações:

  • 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.

Testando com Insomnia

Observações:

  • 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.

Registrar Usuário:

  1. Abra o Insomnia e crie uma nova requisição.
  2. Defina o método como POST e a URL como http://localhost:3000/usuarios/register.
  3. No cabeçalho "Body", selecione a opção "JSON" e cole o seguinte payload:
{
  "nome": "Seu Nome",
  "email": "[email protected]",
  "senha": "suaSenha"
}
  1. Clique em "Enviar" para realizar a requisição.
  2. 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".

Login de Usuário:

  1. Crie uma nova requisição no Insomnia.
  2. Defina o método como POST e a URL como http://localhost:3000/usuarios/login.
  3. No cabeçalho "Body", selecione a opção "JSON" e cole o seguinte payload:
{
  "email": "[email protected]",
  "senha": "suaSenha"
}
  1. Clique em "Enviar" para realizar a requisição.
  2. 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.

Obter Perfil do Usuário:

  1. Crie uma nova requisição no Insomnia.
  2. Defina o método como GET e a URL como http://localhost:3000/usuarios/profile.
  3. No cabeçalho "Authorization", adicione o tipo de autenticação como Bearer e o token JWT obtido no login no campo "Token".
  4. Clique em "Enviar" para realizar a requisição.
  5. 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.

Atualizar Perfil do Usuário:

  1. Crie uma nova requisição no Insomnia.
  2. Defina o método como PUT e a URL como http://localhost:3000/usuarios.
  3. No cabeçalho "Authorization", adicione o tipo de autenticação como Bearer e o token JWT obtido no login no campo "Token".
  4. 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": "[email protected]",
  "senha": "novaSenha"
}
  1. Clique em "Enviar" para realizar a requisição.
  2. A resposta deve conter o código de status 200 e um JSON com a mensagem "Perfil atualizado com sucesso".

Listar Categorias:

  1. Crie uma nova requisição no Insomnia.
  2. Defina o método como GET e a URL como http://localhost:3000/categorias.
  3. Clique em "Enviar" para realizar a requisição.
  4. A resposta deve conter o código de status 200 e um array JSON com a lista de categorias, incluindo ID e descrição.

Contribuindo:

  1. Faça um fork do repositório do projeto.
  2. Crie uma nova branch: `git checkout -b minha-nova-feature`.
  3. Faça suas alterações e commits: `git commit -m 'Adiciona minha nova feature'`.
  4. Envie as alterações para o seu fork: `git push origin minha-nova-feature`.
  5. Abra um Pull Request para o repositório original.

Licença:

Este projeto está licenciado sob a MIT License. Consulte o arquivo LICENSE para mais detalhes.

Conclusão:

Este guia completo fornece instruções detalhadas sobre como testar os endpoints da API PDV usando o Insomnia.

Agradecimentos e Colaboração

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!

deploy_api_pdv's People

Contributors

eberfelipe avatar elivaldoquio avatar ericassisdev avatar flamota avatar gian-uc avatar rafaelps10 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.