/api-rest-mentorix

API REST desenvolvida com Node.js com objetivo de gerenciar as entidades do projeto Mentorix.

Primary LanguageJavaScriptMIT LicenseMIT

Projeto Mentorix

Descrição do projeto

Olá! Apresentamos aqui o nosso projeto, o Mentorix. Trata-se de uma API seguindo o padrão Rest feita com Node.JS.

O objetivo deste projeto foi trabalhar em equipe para produzir uma API seguindo os padrões REST, para que mais tarde façamos integração com o Front-End que será feito em React.

O que é uma API REST? API (Application Programming Interface) é uma série de definições e protocolos usados para montar e integrar softwares de aplicação. Uma API seguindo o padrão REST (Representational State Transfer) indica que, quando o cliente/usuário requerir um recurso usando esse tipo de API, o servidor transferirá o recurso de uma maneira padronizada (.json).

Fluxo do projeto

  1. Criar o DB Diagram;
  • 1.1. Criar banco de dados no mySQL Workbench, o nome será: database_mentorix;
  1. Rodar SQL Script para criar as tabelas e relacionamentos no Banco de Dados no mySQL Workbench;

  2. Modelar as entidades no código do projeto (criar models);

  3. Estabelecer relações entre as entidades de acordo com DB Diagram;

  4. Cria método dentro do service para interagir com o banco de dados e retornar a informação correta para o Controller;

  5. Criar rota no Controller (Fazer os verbos, exemplo: route.get);

  6. Dentro da rota do Controller chamar a função do service criada para obter/salvar/editar/deletar dados;

  7. Retorna no Controller as informações obtidas;

  8. Hospedagem da API no Render (Deploy);

  9. Hospedagem do Banco de Dados no Google Cloud;

  10. Verificar com o Insomnia se a rota está funcionando corretamente.

Tecnologias Utilizadas

Node.js // MySQL // Postman

Bibliotecas: Bcrypt, express, mysql2 e sequelize

Deploy

Para fazer o deploy desse projeto rode

Clone o projeto

com HTTPS
git clone https://github.com/devtaw/api-rest-mentorix.git
com SSH
git clone git@github.com:devtaw/api-rest-mentorix.git
Entre no diretório do projeto
cd api-rest-mentorix
Abra com code (opcional)
code .
Instale as dependências
npm install
Inicie o servidor
npm run start

//ou

npm start

🎉🎉🎉 É isso, aproveite o projeto.

Teste Rotas

Certifique-se de ter o Postman ou Insomnia instalado em seu sistema.

Area Atuação

POST - Rota: '/areas-atuacao'

A rota post cria area atuacao

Entrada
{
		"id": 13,
		"nome": "Desenvolvimento Web",
		"descricaoArea": "criação de sites e aplicativos para a internet usando linguagens como HTML, CSS e JavaScript",
		"fotoAreaAtuacao": "https://th.bing.com/th/id/R.10a6b3802667bb8ca5177c88a880f3dc?rik=i3y9whMAtz1SSw&pid=ImgRaw&r=0 ",
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}
Saída
{
	"Sucesso": " area agendamentos" criado com sucesso!"
}

GET - Rota: '/areas-atuacao'

A rota get busca todos as areas atuacao cadastradas

Saída
{
	"id": 14,
	"nome": "Engenharia",
	"descricaoArea": "Aplica princípios científicos e matemáticos para projetar, construir e melhorar sistemas, estruturas e dispositivos",
	"fotoAreaAtuacao": "https://www.univille.edu.br/community/novoportal/VirtualDisk.html/downloadDirect/1462802/FA7-engenharia-mecanica-960x750.jpg",
	"createdAt": "2023-09-20",
	"updatedAt": "2023-09-20"
}

GET - Rota: '/areas-atuacao/:id

  • A rota get id busca o areas atuacao pelo id informado*
Ex rota:

https://mentorix.onrender.com/areas-atuacao/13

Saída
{
    "id": 13,
	"nome": "Desenvolvimento Web",
	"descricaoArea": "criação de sites e aplicativos para a internet usando linguagens como HTML, CSS e JavaScript",
	"fotoAreaAtuacao": "https://th.bing.com/th/id/R.10a6b3802667bb8ca5177c88a880f3dc?rik=i3y9whMAtz1SSw&pid=ImgRaw&r=0 ",
	"createdAt": "2023-09-20",
	"updatedAt": "2023-09-20"
}

DELETE - Rota: '/areas-atuacao/:id'

A rota DELETE id deleta a areas-atuacao pelo id informado

Ex rota:

https://mentorix.onrender.com/areas-atuacao/13

Saída
{
	"id": 13,
	"nome": "Desenvolvimento Web",
	"descricaoArea": "criação de sites e aplicativos para a internet usando linguagens como HTML, CSS e JavaScript",
	"fotoAreaAtuacao": "https://th.bing.com/th/id/R.10a6b3802667bb8ca5177c88a880f3dc?rik=i3y9whMAtz1SSw&pid=ImgRaw&r=0 ",
	"createdAt": "2023-09-20",
	"updatedAt": "2023-09-20"
}

Agendamento

POST - Rota: '/agendamentos'

A rota post cria agendamentos

Entrada
{
"id": 10
 "campoMensagem": "quero agendar",
  "aceite": true,
  "mentor_id":1,
}
Saída

{
	"Sucesso": "agendamentos" criado com sucesso!"
}

GET - Rota: '/agendamentos'

A rota get busca todos as agendamentos" cadastradas

Saída
{
 "id": 10
 "campoMensagem": "quero agendar",
  "aceite": true,
  "mentor_id":1,
}

GET - Rota: '/agendamentos/:id'

  • A rota get id busca o Agendamentos pelo id informado
Ex rota:

https://mentorix.onrender.com//agendamentos/10

Saída
{
 "id": 10
 "campoMensagem": "quero agendar",
  "aceite": true,
  "mentor_id":1,
}

DELETE - Rota: '/agendamentos'/:id

A rota DELETE id deleta a agendamentos" pelo id informado

Saída
{

 "id": 10
 "campoMensagem": "quero agendar",
  "aceite": true,
  "mentor_id":1,
}

PUT - Rota: '/agendamentos"/:id'

A rota PUT id atualiza agendamentos" pelo id informado

{

 "id": 10
 "campoMensagem": "quero agendar",
  "aceite": true,
  "mentor_id":1,
}
⛔ Tratamento de Erro

Valida nome

{
    "message": "Usuário não encontrado""
}
Valida e-mail
{
    "message": "Email é obrigatório"."
}
Valida senha
{
    "message": "Senha é obrigatória""
}
Valida telefone
{
    "message": "Telefone é obrigatório""
}

Especialidade

POST - Rota: '/especialidades'

A rota cria especialidades

{
	"id": 1,
	"nome": "Segurança da Informação",
	"descricao": "area que se concentra em garantir a segurança e proteção dos sistemas de informação",
	"foto": "https://i.ytimg.com/vi/RnsYE2eZqkA/maxresdefault.jpg",
	"createdAt": "2023-09-21",
	"updatedAt": "2023-09-21"
}

GET - Rota '/especialidades'/

{
	"id": 1,
	"nome": "Segurança da Informação",
	"descricao": "area que se concentra em garantir a segurança e proteção dos sistemas de informação",
	"foto": "https://i.ytimg.com/vi/RnsYE2eZqkA/maxresdefault.jpg",
	"createdAt": "2023-09-21",
	"updatedAt": "2023-09-21"
},

GET ID - Rota '/especialidades/:id'

https://mentorix.onrender.com/especialidades/1

{
    "id": 1,
    "nome": "Segurança da Informação",
    "descricao": "area que se concentra em garantir a segurança e proteção dos sistemas de informação",
    "foto": "https://i.ytimg.com/vi/RnsYE2eZqkA/maxresdefault.jpg",
    "createdAt": "2023-09-21",
    "updatedAt": "2023-09-21"
}

PUT - Rota '/especialidades/:id'

 {
    "id": 3,
    "nome": "Segurança da Informação TESTE",
    "descricao": "area que se concentra em garantir a segurança e proteção dos sistemas de informação",
    "foto": "https://i.ytimg.com/vi/RnsYE2eZqkA/maxresdefault.jpg",
    "createdAt": "2023-09-21",
    "updatedAt": "2023-09-22"
}

DELETE - Rota '/especialidades/:id'

Pesquisar por ID https://mentorix.onrender.com/especialidades/3

{
"id": 3,
"nome": "Segurança da Informação TESTE",
"descricao": "area que se concentra em garantir a segurança e proteção dos sistemas de informação",
"foto": "https://i.ytimg.com/vi/RnsYE2eZqkA/maxresdefault.jpg",
"createdAt": "2023-09-21",
"updatedAt": "2023-09-22"
}

Depois do Delete, pesquisar novamente por id .

Tratamento de erro

{
	"messagem": "Especialidade não encontrada"
}

Mentores

POST - Rota: '/mentores'/

A rota post cria area mentor

Entrada
        {
		"id": 7,
		"nome": "Gerson Josias",
		"dataNascimento": "16/06/1986",
		"telefone": "041988887777",
		"nivelExperiencia": "senior",
		"experienciaProfissional": "inserir texto de experiencia profissional",
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
	 }
Saída
{
	"Sucesso": "Mentor criado com sucesso!"
}

GET - Rota: '/mentores'/

A rota get busca todos os mentores

Saída
{
	"id": 7,
		"nome": "Gerson Josias",
		"dataNascimento": "16/06/1986",
		"telefone": "041988887777",
		"nivelExperiencia": "senior",
		"experienciaProfissional": "inserir texto de experiencia profissional",
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

GET - Rota: '/mentores/:id'

  • A rota get id busca o mentores pelo id informado*
Ex rota:

https://mentorix.onrender.com/mentores/7

Saída
{
    "id": 7,
		"nome": "Gerson Josias",
		"dataNascimento": "16/06/1986",
		"telefone": "041988887777",
		"nivelExperiencia": "senior",
		"experienciaProfissional": "inserir texto de experiencia profissional",
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

DELETE - Rota: '/mentores/:id'

A rota DELETE id deleta o mentores pelo id informado

Ex rota:

https://mentorix.onrender.com/mentores/7

Saída
{
	"id": 7,
		"nome": "Gerson Josias",
		"dataNascimento": "16/06/1986",
		"telefone": "041988887777",
		"nivelExperiencia": "senior",
		"experienciaProfissional": "inserir texto de experiencia profissional",
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

PUT - Rota: '/mentores/:id'

A rota PUT id atualiza mentores pelo id informado

{
	"id": 7,
		"nome": "Adriano Rodrigues",
		"dataNascimento": "23/09/1998",
		"telefone": "041988887777",
		"nivelExperiencia": "pleno",
		"experienciaProfissional": "inserir texto de experiencia profissional",
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

MentoresEspecialidade

POST - Rota: '/mentores-especialidades

A rota post cria mentores-especialidade

Entrada
{
	"id": 13,
	"mentor_id": 5,
	"especialidade_id": 8,
	"createdAt": "2023-09-20",
	"updatedAt": "2023-09-20"
}
Saída
{
	"Sucesso": " mentor-especialidade criado com sucesso!"
}

GET - Rota: '/mentores-especialidade'

A rota get busca todos as mentores-especialidades

Saída
{
		"id": 13,
		"mentor_id": 5,
		"especialidade_id": 8,
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

GET - Rota: '/mentor-especialidade/:id'

  • A rota get id busca a especialidade do mentor pelo id informado*
Saída
{
		"id": 13,
		"mentor_id": 5,
		"especialidade_id": 8,
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

DELETE - Rota: '/mentores-especialidade/:id'

A rota DELETE id deleta a especialidade do mentores- especialidade pelo id informado

Ex rota:

https://mentorix.onrender.com/mentor-especialidade/13

Saída
{
		"id": 13,
		"mentor_id": 5,
		"especialidade_id": 8,
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

PUT - Rota: '/mentores-especialidade/:id'

r A rota PUT id atualiza mentor-especialidade pelo id informado

{
		"id": 13,
		"mentor_id": 7,
		"especialidade_id": 9,
		"createdAt": "2023-09-20",
		"updatedAt": "2023-09-20"
}

Referência