Executando verificação de segurança...
2

Primeiros passos com Node.Js

Bom dia, tarde, ou noite!
Se você é programador web, com certeza já quis começar com Back-End (se não, uma hora vai).
E bom, não é difícil achar algum conteúdo sobre como construir uma API simples em node. E por esse motivo, vou tentar trazer algo mais completo, com integração de banco de dados (iremos usar sqlite) e faremos uma página de login bem simples ao longo do post.
Sente-se e vamos lá!

O que faremos ao longo deste post?

  1. Vamos criar uma simples api
  2. Vamos integrar o uso de um banco de dados na api
  3. E vamos criar uma simples página de cadastro e login

Introdução

Na introdução, irei explicar algumas coisas, pra melhor entendimento

O que é uma api? 
    L O que é REST?

O que é uma API?

Api é a sigla para Application Programming Interface (Interface de Programação de Aplicação). No contexto da API, aplicação se refere ao software com uma função distinta, e a interface pode ser pensada como uma definição de como as duas aplicações se comunicam.
Então sim, a Api é uma aplicação, que vai ser consumida por outra aplicação.

O que é REST?

Rest basicamente é um padrão de troca de informações entre duas aplicações, visando fazer a comunicação HTTP ser mais eficiente.

O que iremos utilizar?

  1. Node (óbvio)
  2. Um editor de código de sua preferência
  3. Conhecimento prévio de JavaScript

Criação da API

Início do projeto

Para começar, vamos criar uma pasta chamada "node-api"

Com o node instalado, vamos utilizar o comando npm init dentro da pasta
O npm vai pedir algumas coisas como: nome do projeto, versão, descrição, e etc. Mas não precisamos nos preocupar com isso, apenas saia apertando ENTER.

Agora, vamos instalar um único pacote, coloque o seguinte comando no terminal (ou console no windows) npm install express.

Com tudo isso feito, vamos começar a desenvolver nossa API.
Abra seu editor, e vamos criar o arquivo index.js na raiz do projeto.

Criado o arquivo, simplesmente cole este código:

const express = require("express") // importa o express dentro da constante express

const app = express() // instancia o express dentro da constante app

app.listen(3000, () => { //Coloca o app (nosso express) para ouvir requisições na porta 3000
    console.log("Servidor online!")
})

Se rodarmos isso com node . teremos o seguinte resultado

luiz@luiz-C14CU51:~/node-api$ node .
Servidor online!

(pra parar de rodar é so dar um CTRL C)

Bom, a princípio nada aconteceu, mas através deste simples código, fomos capazes de rodar um servidor.

Implementando API

Bom, agora sim, iremos implementar uma API a nossa aplicação node.
Agora, adicione este código ápos a instância do express, e antes de iniciarmos o servidor

app.get("/get", (req, res) => { 
    res.status(200).json({
        message: "Get"
    })
})
/*Essas linhas basicamente definem que 
o app irá escutar por requisiçoes que utilizam o método GET na url 
localhost:3000/get. 
req = Requisição feita pelo cliente
res = Resposta do servidor

res.status define o status code da resposta
e .json define o corpo json da resposta

o mesmo se repete em todos os outros, a única alteração é o método em questão
*/


app.post("/post", (req, res) => {
    res.status(200).json({
        message: "Post"
    })
})
app.put("/put", (req, res) => {
    res.status(200).json({
        message: "Put"
    })
})
app.delete("/get", (req, res) => {
    res.status(200).json({
        message: "Delete"
    })
}

Criamos uma api amigos, para testa-la, podemos usar programas como o Insomnia e fazer os requests nas urls:

Enfim, a nossa api está pronta.

Trabalhando com banco de dados

Agora, iremos integrar um belíssimo banco de dados, e junto a isso, criaremos uma página de cadastro e login. Iremos utilizar o Prisma, ORM sensacional que nos possibilita trabalhar com sqlite dentro do código JavaScript.
Vamos instalar o dotenv e o prisma utilizando o seguinte comando:
npm install prisma @prisma/client dotenv

Feita a instalação, rode o seguinte comando
npx prisma init

Veja que, foi criada uma pasta chamada "prisma", contendo um arquivo "schema.prisma", e outros arquivos foram criados
Nossa pasta ficará assim:

node_modules
prisma
    L schema.prisma
index.js
.env
.gitignore
package-lock.json
package.json

Vamos abrir o arquivo schema.prisma, e edita-lo da seguinte forma:

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

model User{
  id String @id @default(uuid())
  email String @unique
  password String
  
  @@map("users")
}

Por agora, vamos nos atentar apenas ao datasource e ao model User.
O datasource define algumas propriedades importantes para a conexão com o banco de dados, como qual banco estamos utilizando (nesse caso, sqlite) e a url (que será um arquivo)

o model User é basicamente a representação da tabela users, que, já estruturamos, definimos um campo de id, que é do tipo string(uuid() é basicamente definindo que o id sera um identificador único universal), email, que será unico e será uma string, e uma senha que também sera uma string. Agora, so falta criar o banco de dados não é?

Agora, no arquivo .env defina a DATABASE_URL para file:../data/database.db

DATABASE_URL=file:../data/database.db

E vamos rodar o seguinte
npx prisma migrate dev este comando cria uma nova migration (basicamente sincroniza o banco de dados com o schema)

coloque um nome para a migration

E pronto, temos um arquivo .db

Bom, o post já está meio grande, então pra não ficar gigante, eu vou colocar o source da aplicação de login que prometi no github, com comentários e etc (vou colocar o link aqui em algum tempo).

Me corrija se expliquei algo errado, ou algo que ficou mal explicado

Espero que isso sirva de ajuda a algum de vocês. ABRAÇO.

Repositório do github

Carregando publicação patrocinada...
1
1

opa! valeu pelo feedback. O node é uma tecnologia fantástica mesmo, da pra fazer muita coisa massa. Recomendo estudar um pouco mais sobre, porque é algo realmente bem extenso com uma infinidade de pacotes