├── .gitignore ├── database ├── conexao.js └── script.sql ├── controllers └── atendimentoConytoller.js ├── package.json ├── routers ├── index.js └── atendimentoRoute.js ├── index.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | 3 | /database 4 | 5 | yarn.lock -------------------------------------------------------------------------------- /database/conexao.js: -------------------------------------------------------------------------------- 1 | const mysql = require('mysql2'); 2 | 3 | // Sua conexão com o banco de dados 4 | const conexao = mysql.createConnection({ 5 | host: "localhost", 6 | database: "bdAtendimento", 7 | user: "aluno", 8 | password: "sptech" 9 | }); 10 | 11 | // Criando modulo para ser exportado lá para o index.js (o que está FORA da pasta de rotas) :) 12 | module.exports = conexao; -------------------------------------------------------------------------------- /controllers/atendimentoConytoller.js: -------------------------------------------------------------------------------- 1 | class atendimentoController{ 2 | buscar(){ 3 | return `Buscando atendimentos`; 4 | } 5 | 6 | criar() { 7 | return `Criado atendimento`; 8 | } 9 | 10 | atualizar(id) { 11 | return `Alterando o atendimento N°${id}`; 12 | } 13 | 14 | deletar(id) { 15 | return `Deletando o atendimento N°${id}`; 16 | } 17 | } 18 | 19 | module.exports = new AtendimentoController(); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api-node", 3 | "version": "1.0.0", 4 | "description": "Antes de tudo, crie um diretório (uma **pasta**) em seu computador.\r - Eu criei o diretório **api-node**", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.18.2", 14 | "mysql2": "^2.3.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /routers/index.js: -------------------------------------------------------------------------------- 1 | // Cada arquivo de rota que vc criar entra aqui 2 | const routerAtendimento = require("./atendimentoRoute"); 3 | module.exports = (app) => { 4 | app.use(routerAtendimento); 5 | // e depois entra aqui 6 | /* 7 | criei o arquivo clienteRoute.js 8 | então vc faz todas as rotas dele dentro dele e depois vem aqui 9 | na primeira linha vc criaria: 10 | const routerCliente = require("./clienteRoute"); 11 | e depois aqui dentro criaria o 12 | app.use(routerCliente); 13 | 14 | */ 15 | }; -------------------------------------------------------------------------------- /database/script.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE bdAtendimento; 2 | USE bdAtendimento; 3 | 4 | CREATE TABLE tbAtendimentos( 5 | idAtendimento INT PRIMARY KEY AUTO_INCREMENT 6 | , dataAtendimento DATE 7 | , tipoServico VARCHAR(120) 8 | , nomeCliente VARCHAR(120) 9 | , statusAtendimento ENUM("ativo", "realizado", "cancelado") DEFAULT "ativo" 10 | ); 11 | 12 | INSERT INTO tbAtendimentos (dataAtendimento, tipoServico, nomeCliente) 13 | VALUES ('2023-05-17', 'Varrendo a casa', 'Felipe Santos'); 14 | 15 | SELECT * FROM tbAtendimentos; 16 | 17 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // É chamada a biblioteca Express dentro da constante 2 | const express = require('express'); 3 | // app é o nosso servidor, ele recebe todas as dependencias da express 4 | const app = express(); 5 | //Porta para o servidor ouvir 6 | const porta = 3000 7 | // Importando a rota criada na parte dois 8 | const router = require("./routers/index") 9 | // Parte 3: Banco de dados 10 | const conexao = require("./database/conexao") 11 | 12 | conexao.connect();// Banco de dados 13 | 14 | router(app); // criada na parte dois sobre rotas 15 | 16 | // A porta que o nosso servidor vai escutar. "Vamos lança-lo no ar!" 17 | // E verificando se teve algum (erro) 18 | app.listen(porta, (error) => { // (escutando a porta 3000, função para verificar se teve algum erro ()=> ) 19 | 20 | // Se teve erro: 21 | if (error) { 22 | console.log('Deu erro em alguma coisa ai em'); 23 | return; 24 | } 25 | 26 | console.log('O Servidor está on heheheee :)') 27 | }); -------------------------------------------------------------------------------- /routers/atendimentoRoute.js: -------------------------------------------------------------------------------- 1 | /* 2 | Essas duas linhas a baixo fazem a mesma coisa tá? 3 | Lembra do index.js, então: 4 | */ 5 | //const Router = require('express').Router; 6 | const { Router } = require("express"); 7 | 8 | const router = Router(); 9 | 10 | //Metodos 11 | // GET, POST, PUT, DELETE 12 | 13 | // GET 14 | // essa rota seria assim e no navegador: localhost:3000/atendimentos 15 | // req = Requisição e res = Resposta 16 | router.get("/atendimentos/:nome", (req, res) => { 17 | const { nome } = req.params; 18 | res.send(`Olá ${nome}!!!Como vc está ?`); 19 | }); 20 | 21 | 22 | // POST 23 | // Esse metodo não dá para ser acessaddo pelo navegador 24 | router.post("/atendimentos", (req, res) => { 25 | res.send(`Criando`); 26 | }); 27 | 28 | // PUT 29 | // Também é um metodo que não pode ser chamado pelo navegador 30 | // Enviando o id como paremtro 31 | router.put("/atendimentos/:id", (req, res) => { 32 | const { id } = req.params; //Extraindo o id da requisição 33 | res.send(`Atualizando ${id}`); 34 | }); 35 | 36 | // DELETE 37 | // Não dá pra chamar esse metodo pelo navegador 38 | router.delete("/atendimento/:id", (req, res) => { 39 | const { id } = req.params; 40 | res.send(`Deletando ${id}`); 41 | }); 42 | 43 | // Estamos exportando esses dados para o index.js que está aqui dentro do mesmo repositório 44 | module.exports = router; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # APRENDENDO A >CRIAR< API EM NODEJS 2 | 3 | > **Em desenvolvimento!** 4 | 5 | ## Sumário 6 | - ### [Confiração inicial](#configuração-inicial) 7 | - ### [Rotas](#rotas-1) 8 | - ### [Conexão com o BD](#conexão-com-o-banco-de-dados) 9 | - 10 | 11 | --- 12 | 13 | ## Configuração inicial 14 | 15 | Antes de tudo, crie um diretório (uma **pasta**) em seu computador. 16 | - Eu criei o diretório **api-node** 17 | 18 | Entre neste diretório e crie o arquivo **index.js**. Este aquivo é o inicio da sua API. 19 | 20 | Agora, neste mesmo diretório, abra o terminal endereçado nela. 21 | 22 | Assim que abrir o terminal(ou cmd) digite o comando 23 | ```bash 24 | npm init -y 25 | ``` 26 | ### Explicando: 27 | - O `npm` (Node Package Manager) é um gerenciador de pacotes para a plataforma Node.js. Ele permite que você instale, compartilhe e gerencie as dependências do seu projeto de forma fácil e eficiente. 28 | - O comando `npm init` é usado para inicializar um novo projeto e criar um arquivo chamado `package.json`. Esse arquivo armazena **informações** sobre o projeto, como **nome**, **versão**, **descrição**, **scripts**, **dependências** e muito mais. O `package.json` é **essencial para gerenciar** e compartilhar seu projeto com outras pessoas, além de fornecer **informações importantes** para o npm ao instalar e atualizar pacotes. 29 | - O argumento `-y` tira a necessidade de responder a perguntas interativas. 30 | 31 | 32 | Agora é nescessario trazer as bibliotecas para o projeto. 33 | 34 | A primeira a trazer, é a **express**. Rode o comando a baixo (No mesmo lugar onde está o arquivo package.json) 35 | ```bash 36 | npm install express 37 | ``` 38 | 39 | Ele vai criar a pasta `node_modules`. É nela que vão ficar as bibliotecas e suas depencias que o seu sistema ira usar, então... **Não mexe nela não viu?** 40 | 41 | A partir deste ponto, vamos mexer no `index.js`, Então recomendo fortemente ler o código, pois comentei a maioria das linhas para o total entendimento. 42 | 43 | [...] Se você chegou na linha **20** do código do `index.js`, boaaaa ! Testa ai, não copia, escreve com as suas mãos fazendo os seus testes. 44 | 45 | Da linha **1 à 20**, é simplesmente só para colocar o servidor "no ar". E para fazer isso, rode o comando: 46 | ```bash 47 | node index.js 48 | ``` 49 | 50 | E observe a Resposta que o terminal irá te dar. 51 | 52 | Se funcionou... OK :)... Se não, google, tentativa e erro, ou pode me chamar :) 53 | 54 | --- 55 | 56 | ## Rotas 57 | 58 | Antes de tudo... O que são rotas? 59 | > Rotas são caminhos definidos em um aplicativo web que correspondem a URLs específicas. Elas são responsáveis por determinar o que acontece quando um usuário acessa uma determinada URL. As rotas mapeiam URLs para funções ou manipuladores de código que serão executados quando a URL correspondente for acessada. Por exemplo, em um aplicativo de blog, podemos ter uma rota "/post" que mostra um determinado post quando o usuário acessa essa URL. As rotas permitem que você organize e controle como seu aplicativo responde às solicitações dos usuários, direcionando-as para a lógica apropriada do servidor. 60 | > ~ Tio Google. 61 | 62 | Entendeu? Se sim, blzz vamo lá. 63 | 64 | Crie um diretório chamado routers, dentro do diretório o seu projeto. 65 | 66 | Dentro dessa pasta crie o `atendimentoRoute.js`. 67 | 68 | Agora dentro desse arquivo faça o que está no aquivo aqui deste repositório, leia o código sem medo :) 69 | 70 | Leu o arquivo `atendimentoRoute.js`? Ok. Agora crie um novo arquvio chamado `index.js`, porem na pasta **`routers`** 71 | 72 | --- 73 | 74 | ## Conexão com o Banco de Dados 75 | 76 | Bom... É importante a gente ter o BD né? então vamos lá :) 77 | 78 | O script do banco de dados está em [DB](./database/script.sql); 79 | 80 | Você precisa da biblioteca do MySQL para poder utilizar em sua API, por isso, rode o comando a baixo - É importante relembrar, rode esse comando no mesmo lugar onde está o arquivo `package.json`. 81 | ```bash 82 | npm install mysql 83 | ``` 84 | 85 | Crie um diretório chamado `database` ou algum nome que te faça lembrar que este diretório está relacionado ao banco de dados. 86 | 87 | Crie um arquivo chamado `conexao.js`, que o seu arquivo de conexão com o banco de dados. 88 | 89 | Veja este aquivo aqui no repositório em [conexao.js](./database/conexao.js) 90 | 91 | > É DE EXTREMA IMPORTANCIA RESSALTAR QUE: 92 | > A versão do node que foi utilizada e funcionou, foi a v16.13.1 93 | 94 | Para saber a sua versão, rode o comando: 95 | ```bash 96 | node -v 97 | ``` 98 | --------------------------------------------------------------------------------