Skip to content

Latest commit

 

History

History
326 lines (253 loc) · 11.3 KB

README.md

File metadata and controls

326 lines (253 loc) · 11.3 KB

Back end - API Restful CRUD Nunes Sports

Node.js Express Mongoose MongoDB Atlas Render Insomnia Git GitHub

Visão Geral

Este projeto consiste em uma API para a Nunes Sports, que oferece operações de CRUD (Create, Read, Update, Delete) para produtos da loja. A solução inclui uma base de dados MongoDB com uma tabela de produtos, contendo campos como Nome, Código, Descrição e Preço. Além disso, uma interface web foi desenvolvida para permitir que usuários visualizem, criem, editem e excluam produtos, refletindo todas as ações no banco de dados.

  1. Base de dados com uma tabela 'produtos' com os campos:
    • Nome do produto
    • Código do produto
    • Descrição do produto
    • Preço do produto
    • Utilização de JSON como formato de comunicação
    • Banco de dados MongoDB Atlas na nuvem

Tecnologias Utilizadas

  • Node.js (LTS)
  • Express 4.17.1
  • Mongoose (Object Data Modeling para MongoDB)
  • MongoDB Atlas para armazenamento de dados
  • Render para hospedagem
  • Insomnia para testes de API

Como Usar

  1. Clone este repositório (Opcional: Se você estiver interessado em examinar o código-fonte ou contribuir para o projeto).

  2. Configure seu ambiente de desenvolvimento com as tecnologias mencionadas.

  3. Execute a aplicação Node.js. Utilize o seguinte comando no terminal:

    npm start
    # ou
    node src/server.js
  4. Utilize os seguintes endpoints para realizar operações na API:

  • Listar Todos os Produtos:

    [GET] http://localhost:3001/products/listar
    
  • Buscar Produto por ID:

    [GET] http://localhost:3001/products//buscar/:productId
    
  • Cadastrar Produto:

    [POST] http://localhost:3001/products/cadastrar
    
  • Atualizar Produto por ID:

    [PUT] http://localhost:3001/products/atualizar/:productId
    
  • Deletar Produto por ID:

    [DELETE] http://localhost:3001/products/deletar/:productId
    

Certifique-se de que as tecnologias necessárias estejam configuradas no seu ambiente antes de utilizar os endpoints. Você pode usar ferramentas como o INSOMNIA, cURL ou POSTMAN para realizar as operações na API.

Como Testar os Endpoints

Você pode utilizar o cURL para testar os endpoints diretamente do terminal ou linha de comando. Abaixo estão alguns exemplos básicos:

Cadastro de Produtos

curl -X POST -H "Content-Type: application/json" -d '{"nome":"Nome do Produto", "codigo":"12345", "descricao":"Descrição do Produto", "preco":99.99}' http://localhost:3001/products/cadastrar

Atualização de Produto (Substitua 'productId' pelo ID do Produto)

curl -X PUT -H "Content-Type: application/json" -d '{"nome":"Novo Nome", "codigo":"54321", "descricao":"Nova Descrição", "preco":129.99}' http://localhost:3001/products/atualizar/:productId

Listar Todos os Produtos

curl -X GET http://localhost:3001/products/listar

Busca de Produto por ID (Substitua 'productId' pelo ID do Produto)

curl -X GET http://localhost:3001/products/buscar/:productId

Deletar Produto por ID (Substitua 'productId' pelo ID do Produto)

curl -X DELETE http://localhost:3001/products/deletar/:productId

Endpoints

A seguir estão os endpoints disponíveis do projeto hospedado:

  • Cadastro de Produto

    • URL: https://nunes-sports-axl7.onrender.com/products/cadastrar

    • Método: POST

    • Input:

      • Campos necessários para cadastro (ex: nome, código, descrição, preço)
      {
        "nome": "Nome do Produto",
        "codigo": "12345",
        "descricao": "Descrição do Produto",
        "preco": 99.99
      }
      • Output (sucesso):
        • Retorno com informações do produto cadastrado
      {
        "message": "Produto 'Nome do Produto' cadastrado com Sucesso!!!",
        "id": "productId",
        "data_criacao": "Data de Criação",
        "data_atualizacao": "Data de Atualização"
      }
      • Erro:
        • Internal Server Error
  • Atualizar produto

    • URL: https://nunes-sports-axl7.onrender.com/products/atualizar/:productId

    • Método: PUT

    • URL Params:

      • :productId - ID do produto a ser atualizado
    • Input:

      • Campos a serem atualizados (ex: nome, código, descrição, preço) em formato JSON
      {
        "nome": "Novo Nome",
        "codigo": "54321",
        "descricao": "Nova Descrição",
        "preco": 129.99
      }
      • Output (sucesso):
        • Retorno com informações atualizadas do produto
      {
        "message": "Produto atualizado com sucesso",
        "id": "productId",
        "data_criacao": "Data de Criação",
        "data_atualizacao": "Data de Atualização"
      }
      • Erros:
        • Internal Server Error
  • Listar todos os Produtos

    • URL: https://nunes-sports-axl7.onrender.com/products/listar

    • Método: GET

    • Output (sucesso):

      • Retorno com todos os Produtos listados
      [
        {
          "nome": "Nome do Produto 1",
          "codigo": "12345",
          "descricao": "Descrição do Produto 1",
          "preco": 99.99,
          "data_criacao": "Data de Criação",
          "data_atualizacao": "Data de Atualização"
        },
        {
          "nome": "Nome do Produto 2",
          "codigo": "67890",
          "descricao": "Descrição do Produto 2",
          "preco": 149.99,
          "data_criacao": "Data de Criação",
          "data_atualizacao": "Data de Atualização"
        }
        // ...
      ]
      • Erros:
        • Internal Server Error
  • Busca de Produto por ID

    • URL: https://nunes-sports-axl7.onrender.com/products/buscar/:productId

    • Método: PUT

    • URL Params:

      • :productId - ID do produto
    • Output (sucesso):

      • Retorno com as informações do produto
      {
        "nome": "Nome do Produto",
        "codigo": "12345",
        "descricao": "Descrição do Produto",
        "preco": 99.99,
        "data_criacao": "Data de Criação",
        "data_atualizacao": "Data de Atualização"
      }
      • Erros:
        • Produto não encontrado
        • Internal Server Error
  • Deletar Produto por ID

Estrutura do Projeto

A estrutura deste projeto segue a organização abaixo:

  • src: Contém o código-fonte Node.js da aplicação.
  • config: Armazena configurações específicas da aplicação.
  • controllers: Responsável por conter os controladores da lógica de negócios.
  • database: Mantém os arquivos relacionados ao banco de dados, como conexões e configurações.
  • middlewares: Contém middlewares utilizados na aplicação.
  • models: Guarda os modelos de dados utilizados na aplicação.
  • server.js: Ponto de entrada da aplicação, contendo as configurações e definição das rotas da API.

Sistema de Build com Gerenciamento de Dependências

O projeto utiliza o npm (Node Package Manager) para:

  • Gerenciamento de Dependências: Todas as dependências do projeto são definidas no arquivo package.json e podem ser instaladas usando o comando:
    npm install

Padronização de Código

  • ESLint: O projeto utiliza o ESLint para manter a consistência no estilo do código. Os padrões de estilo são definidos no arquivo .eslintrc.json e a verificação pode ser feita com o comando:
    npm run lint

Link Front-end Nunes Sports:

Languages and Tools

javascript nodejs express jwt mongoose mongodb npm git eslint ubuntu vscode