CRUD EM 5 DIAS - A Saga (1° dia)

Esse é uma saga aonde eu coloco os conhecimentos que eu consegui reunir na minha jornada de desenvolvedor meu primeiro CRUD, por favor, se tiver algo errado, comentem :) obs: Alguns conteudos que estão aqui foram tirados do chatgpt

Protocolo HTTP

O que é?

É um protocolo usado para comunicação na internet, como devices e servidores normalmente se comunicam

Métodos

GET : Indica intenção de leitura de dados

POST: Indica intenção de envio de dados

PUT/PACTH: Indica a intenção atualização/correção

DELETE: Indica a intenção de exclusão de dados

Status

200 e variações = Faixa de SUCESSO

300 e variações = Faixa de REDIRECIONAMENTO

400 e variantes = Faixa de ERRO por conta da REQUISIÇÃO

500 e variantes = Faixa de ERRO por conta do SERVIDOR

Servidor Simples - Node (puro)

const http = require('node:http') //Importa o modulo 'http' nativo do Node 

const server = http.createServer((request, response) => { // Cria servidor
  console.log(request)
  response.writeHead(200)
  response.write('Servidor HTTP em Node.js funcionando!')
  response.end()
})

const PORT = 3000

server.listen(PORT, () => { //Observa a porta indicada
  console.log(`Servidor rodando em http://localhost:${PORT}/`)
})

FrameWork

O que é?

Uma caixa de ferramenta que uni várias ferramentas/funções que possibilita um desenvolvimento mais ágil

Express (FrameWork)

Servidor Simples - Framework (Express)

// Criando projeto Node.js
npm init -y.
// Instalando Express 
npm install express
const express = require('express') // Impoetando o Express

const server = express() //Cria Servidor e atribuindo variável 'server'

server.get('/', (request, response) => { // Rota
  response.send('Servidor Express funcionando!\nVocê está na página inicial.')
})

const PORT = 3000

server.listen(PORT, () => { //Observa a porta indicada
  console.log(`Servidor Express iniciado em http://localhost:${PORT}/`)
})

Conclusão: Variável “server” além de criar o servidor, serve para manipular requisições http recebidas

Arquivos Estáticos

const express = require('express')

const app = express()

app.use(express.static('public')) //"app.use" = cria middleware/filtro 
// 'express.static('public') Atrbui a função de distribuição de páginas
//estáticas ao servidor. "public" é a pasta aonde se
//encontrá os arquivos estáticos

app.get('/', (req, res) => {
  res.sendFile(__dirname + '/views/index.html')
})

const PORT = 3000

app.listen(PORT, () => {
  console.log('Servidor iniciado!')
})
//Entendendo Arvore de aquivos express usadas no código

exprees{
				-static
				-express (metodo)
						    |-------listen (metodo)
}

Middlwares

Middlewares são como "intermediários" em uma aplicação web que utilizam frameworks como o Express.js. Pense neles como filtros ou etapas que ocorrem durante o processamento de uma solicitação (request) e antes que a resposta (response) seja enviada de volta ao usuário.

Quando um pedido é feito a um servidor, ele passa por uma "cadeia" de middlewares. Cada middleware pode fazer algo com o pedido (como verificar a autenticação, processar dados, ou registrar informações), antes de passar o pedido para o próximo middleware ou rota na cadeia.

Se nenhum middleware finaliza o pedido (enviando uma resposta), o pedido continua fluindo pelos middlewares até que chegue a uma rota que responda ou até o final da cadeia.

De forma simples, os middlewares ajudam a dividir e organizar a lógica da sua aplicação em partes menores, fazendo com que o código fique mais modular e fácil de gerenciar.

No caso, o middleware express.static serve arquivos estáticos, como HTML, CSS, JavaScript, imagens, entre outros, que estão na pasta 'public'.

  • Quando você usa app.use(express.static('public')), está dizendo ao Express para verificar a pasta 'public' toda vez que uma solicitação for feita.
  • Se um arquivo correspondente ao caminho solicitado for encontrado nessa pasta, ele é automaticamente servido ao cliente.
  • Por exemplo, se o arquivo public/images/logo.png existir e o usuário acessar http://seusite.com/images/logo.png, o Express vai encontrar o arquivo e enviá-lo diretamente como resposta.