Giter Club home page Giter Club logo

projeto-m4-api_rest's Introduction

API Rest - Restaurante

image image image image

Projeto de conclusão do módulo 4, idealizado pelo BootCamp Resilia, que nos foi proposto, criar uma aplicação desenvolvida em NodeJs, com Express e SQLite, para gerar e administrar a rotas da API, para gerenciamento de um restaurante.

Ferramentas ⚙:

  • VScode
  • Insomnia ou Postman
  • GIT
  • GitHub
  • NODE.Js
  • HEROKU

✔ Checklist dos requisitos do projeto:

  1. Utilizar o padrão MVC;
  2. Utilizar os verbos HTTP seguindo o padrão REST;
  3. Implementar todas as operações de CRUD;
  4. Utilizar o padrão de projeto (design pattern) DAO para abstração de transações no banco, com Promises;
  5. Utilizar o README.md do repositório para documentação;
  6. Utilização de async/await para operações no banco (DAO)
  7. Ter o código fonte hospedado em um repositório no Github

Dependências utilizadas:

Badge Badge Badge Badge Badge Badge

Url para Requisições

HEROKU

	https://restaurante-api-m4.herokuapp.com

Para instalar o projeto na sua máquina, siga as instruções a seguir usando os comandos descritos:

  1. INSTALAR Node JS NA SUA MÁQUINA.

  2. CLONAR ESSE REPOSITÓRIO:

    git clone [API REST](https://github.com/rnegrelly/Projeto-M4-API_REST.git)
  1. ACESSAR A PASTA CRIADA ATRAVÉS DO CMD USANDO O COMANDO:
     cd Projeto-M4-API_REST
  1. INSTALAR DEPENDÊNCIAS:
     npm install
  1. INICIANDO O SERVIDOR:
     npm run dev

ROTAS E MÉTODOS Entidade_Colaborador:

Método Rota Descrição
GET /colaboradores Retorna toda a tabela de colaboradores
GET /colaboradores/{matricula_colaborador} Retorna um colaborador com base na matrícula informada no endpoint
POST /colaboradores Popula a entidade colaboradores
PUT /colaboradores/{matricula_colaborador} Atualiza os dados de um colaborador com base na matrícula informada no endpoint
DELETE /colaboradores/ Exclui a tabela colaboradores
DELETE /colaboradores/{matricula_colaborador} Exclui os registros de um colaborador com base na matrícula informada no endpoint

Modelo de requisição para o metódo POST:

  {
    "nome_colaborador": "Andressa Ricardo de Amorim",
    "cpf_colaborador": "433.199.143-47",
    "endereco_colaborador": "Av. Edgard Romero nº 87, Madureira, Rio de Janeiro - RJ",
    "cargo_colaborador": "Administrador contábil",
    "email_colaborador": "[email protected]",
    "telefone_colaborador": "(21)98416-2188",
    "turno_colaborador": "Noite",
    "salario_colaborador": "R$ 2.165,30",
    "admissao_colaborador": "13/07/2019",
    "demissao_colaborador": "null"
    }

RETORNA -

ROTAS E MÉTODOS Entidade_Estoque:

Método Rota Descrição
POST /produtos/criar Cria um novo produto
GET /produtos Lista todos os produtos
GET /produtos/pesquisa/ean/{codigoDeBarras} Retorna o produto especificado
GET /produtos/pesquisa/nome Pesquisa Produto pelo nome
GET /produtos/pesquisa/fornecedor/{id} Pesquisa fornecedor de acordo o ID
PUT /produtos/editar/{codigoDeBarras} Atualiza produtos de acordo atualização direta ou código de barras
DELETE /produtos/apagar/{id} Deleta produto de acordo o seu {id}

Modelo de requisição para o método GET

   {
    "nome":"REFINADO"
   }
   

RETORNA -

ROTAS E MÉTODOS Entidade_Cardapio:

Método Rota Descrição
GET /cardapio/tudo Retorna todos dados existente na tabela entidade_cardapio.
GET /cardapio/resumo Retorna os itens do cardapio, com os atributos sabor_cardapio, tamanho_cardapio, valor_cardapio.
GET /cardapio/sabor/{sabor} Retorna os itens do cardapio cujo sabor seja igual ao do parametro da requisição.
GET /cardapio/categoria/{categoria} Retorna os itens do cardapio cuja categoria seja igual ao do parametro da requisição.
GET /cardapio/id/{id} Retorna o item do cardápio cujo Id seja o mesmo que foi informado no endpoint.
POST /cardapio/novo Insere um novo item no cardapio conforme os dados informados no corpo da requisição.
PUT /cardapio/{id} Atualiza os dados do item do cardapio que possua o Id informado no endpoint.
DELETE /cardapio/delete/{id} Exclui o item do cardapio cujo ID seja o mesmo que foi informado no endpoit.

Modelo de requisição para o metódo POST:

{
    "categoria_cardapio" : "Pizza Salgada",
    "sabor_cardapio" : "Calabresa",
    "ingredientes_cardapio" : "Queijo Mussarela, molho de tomate, linguiça calabresa, cebola e orégano",
    "tamanho_cardapio" : "Brotinho",
    "valor_cardapio" : "R$15,00"
}

RETORNA - mensagem de sucesso {message: "Cadastrado com sucesso!"} ou mensagem de erro {"Verifique o item. Objeto não cadastrado"}.

Modelo de requisição para o metódo PUT:

{
    "categoria_cardapio" : "Pizza Salgada",
    "sabor_cardapio" : "Calabresa",
    "ingredientes_cardapio" : "Queijo Mussarela, molho de tomate, linguiça calabresa, cebola e orégano",
    "tamanho_cardapio" : "Brotinho",
    "valor_cardapio" : "R$15,00"
}

RETORNA - mensagem de sucesso {message: "A Bebida Suco Natural foi atualizada com sucesso!"} ou mensagem de erro {"Verifique o item. Objeto não atualizado"}.

Modelo de requisição para o metódo DELETE:

{
    "categoria_cardapio" : "Pizza Salgada",
    "sabor_cardapio" : "Calabresa",
    "ingredientes_cardapio" : "Queijo Mussarela, molho de tomate, linguiça calabresa, cebola e orégano",
    "tamanho_cardapio" : "Brotinho",
    "valor_cardapio" : "R$15,00"
}

RETORNA - mensagem de sucesso {"message": "Registro com Id deletado com sucesso"} ou mensagem de erro.

  1. Validações:

    • O valor correspondente a chave "categoria_cardapio" deve estar contido na lista ['Bebida', 'Pizza Salgada', 'Pizza Doce'];
    • O valor correspondente a chave "sabor_cardapio" deve ser uma string e não pode estar vazia;
    • O valor correspondente a chave "ingredientes_cardapio" deve ser uma string e não pode estar vazia;
    • O valor correspondente a chave "tamanho_cardapio" deve estar contido na lista ['Brotinho', 'Média', 'Grande', 'Família', 'Lata', "1 litro", '2 litros', '400ml',];
    • O valor correspondente a chave "valor_cardapio" deve ser um dado do tipo string que utilize os caracteres da lista '0123456789.,R$', espaços não são permitidos;
    • Case-sensitive.

ROTAS E MÉTODOS Entidade_Cliente:

Método Rota Descrição
GET /clientes Retorna todos os clientes cadastrados no banco de dados.
GET /clientes/:id_cliente Recebe um ID e retorna o referido cliente cadastrado no banco de dados.
GET /clientes/tel/:id_cliente Recebe um ID e retorna o referido cliente e seu telefone cadastrado no banco de dados.
GET /clientes/end/:id_cliente Recebe um ID e retorna o referido cliente e seu endereço cadastrado no banco de dados.
GET /clientes/cpf/:id_cliente Recebe um ID e retorna o referido cliente e seu CPF cadastrado no banco de dados.
POST /clientes Realiza o cadastro de um novo cliente no banco de dados.
PUT /clientes/:id_cliente Recebe um ID e atualiza o cadastro do referido cliente no banco de dados.
DELETE /clientes/:id_cliente Recebe um ID e exlcui o cadastro do referido cliente do banco de dados.

Modelo de requisição para o metódo POST:

{
    "nome_cliente": "Giorgian Daniel De Arrascaeta Benedetti",
    "cpf_cliente": "55555555565",
    "endereco_cliente": "Av. Borges de Medeiros, 997 - Gávea, Rio de Janeiro - RJ",
    "email_cliente": "[email protected]",
    "telefone_cliente": "21984162188"
}

RETORNA - Cadastra um novo cliente na base de dados.

Modelo de requisição para o metódo PUT:

{
    "nome_cliente": "Giorgian Daniel De Arrascaeta Benedetti",
    "cpf_cliente": "55555555565",
    "endereco_cliente": "Av. Borges de Medeiros, 997 - Gávea, Rio de Janeiro - RJ",
    "email_cliente": "[email protected]",
    "telefone_cliente": "21984162188"
}

RETORNA - Mensagem de sucesso: "Cliente atualizado com sucesso." Mensagem de erro: "Não foi possível atualizar os dados do Cliente."

  1. Validações:

    • O valor de "nome_cliete" deve conter ao menos 3 caracteres;
    • O valor de "cpf_cliente" deve conter exatos 11 caracteres;
    • O valor de "endereco_cliente" deve ser uma string e não pode estar vazia;
    • O valor de "email_cliente" deve ser uma estrutura de email válida, com "@", e ".com".
    • O valor de "telefone_cliente" deve conter exatos 11 caracteres;

ROTAS E MÉTODOS Entidade_Fornecedores:

Método Rota Descrição
GET /fornecedores Retorna todos dados existente na tabela da entidade_fornecedores
GET /fornecedores/{id} Retorna o cliente selecionado pelo ID selecionado.
POST /fornecedores/ Insere um novo cadastro de fornecedores no banco de dados
PUT /fornecedores/{id} Atualiza através do ID selecionado o cadastro do fornecedor.
DELETE /fornecedores/{id} Deleta o fornecedor selecionado pelo ID.

Números dos id's cadastrados: 4, 6, 7 e 8.

Modelo de requisição para o metódo POST:

{
  	"nome_fornecedor": "Layse Mayanne",
        "cnpj_fornecedor": "44.438.256/0001-38",
        "endereco_fornecedor": "Rua cimento nobre 405",
        "ramo_fornecedor": "Atacadista",
        "email_fornecedor": "[email protected]",
        "telefone_fornecedor": "(83)3364-8575"
}

RETORNA - mensagem de sucesso {message: "Fornecedor cadastrado com sucesso."} ou mensagem de erro {"Não foi possível efetuar o cadastro do fornecedor"}.

Modelo de requisição para o metódo PUT:

   {
        "nome_fornecedor": "Layse Mayanne",
        "cnpj_fornecedor": "44.438.256/0001-38",
        "endereco_fornecedor": "Rua cimento nobre 405",
        "ramo_fornecedor": "Atacadista",
        "email_fornecedor": "[email protected]",
        "telefone_fornecedor": "(83)3364-8575"
    }

RETORNA - mensagem de sucesso {message: "Fornecedor atualizado!"}.

Modelo de requisição para o metódo DELETE:

   {
        "nome_fornecedor": "Layse Mayanne",
        "cnpj_fornecedor": "44.438.256/0001-38",
        "endereco_fornecedor": "Rua cimento nobre 405",
        "ramo_fornecedor": "Atacadista",
        "email_fornecedor": "[email protected]",
        "telefone_fornecedor": "(83)3364-8575"
    }

RETORNA - mensagem de sucesso {"message": "Fornecedor deletado!"} ou mensagem de erro.

Status do Projeto

Bagde

💻 Time desenvolvedor:

Larrissa Lira - larrissalira Nodja Lima - NodjaLima Simone Luiz - SimoneLuiz Renato Negrelly - rnegrelly Helder Lucas - devhelderlrs


⬆ Voltar ao Topo

projeto-m4-api_rest's People

Contributors

devhelderlrs avatar larrissalira avatar nodjalima avatar rnegrelly avatar simoneluiz avatar

Watchers

 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.