Web Back 04
Web Back 04
Diego Addan
[email protected]
1
Conteúdo
1 Node Js
2 Olá Mundo
3 Express
4 Rotas
5 Parâmetros
6 Validação de parâmetros
Node Js
3
Visão geral
■ Site oficial: https://nodejs.org/
■ Documentação: https://nodejs.dev/learn
■ Javascript (História https://youtu.be/Sh6lK57Cuk4)
■ V8 Google Javascript Engine (https://v8.dev/)
4
Principais características
■ JavaScript assíncrono
■ Orientado a eventos
■ Funções de callback
■ Uso de módulos
■ Operações de I/O não-bloqueantes
5
Olá Mundo
6
Linha de comando
1 Instalação: node -v
2 Criar o arquivo main.js
console.log("Ola Mundo!")
3 Executar:
node main.js
7
Servidor web
2 Executar:
node main.js
8
Criando um projeto
1 Instalar npm
2 npm init
3 npm install nodemon
(Para todo o sistema: sudo npm install -g nodemon)
4 Adicionar a linha: (arquivo package.json )
"start": "nodemon main"
5 Executar:
nodemon index.js
npx nodemon index.js
npm start
9
Requisição
■ req.headers
Dicionário com todos os cabeçalhos HTTP recebidos
■ req.method
Método HTTP da requisição
■ req.rawHeaders
Cabeçalhos HTTP no formato texto
■ req.url
URL da requisição
10
Resposta
11
Express
12
O que é o Express?
13
Ola Mundo!
1 Instalação - https://expressjs.com/en/starter/installing.html
3 Executar
14
O que mudou?
15
Usando o gerador do Express
1 npx express-generator
2 Instalar as dependências (npm install)
3 Rodar a aplicação (npm start)
16
Requisição
req.app
req.app Propriedade com uma referência para a aplicação
req.baseUrl A URL no qual o roteador foi montado.
req.body Os parâmetros enviados no corpo da mensagem HTTP
req.cookies Acesso aos cookies
req.hostname Nome do host que está hospedando a aplicação
req.ip O ip remoto da requisição
req.method Método utilizado pela requisição HTTP
req.params Recebe os parâmetros envaidos pela URL
req.query Parâmetros enviados por GET
17
Resposta
18
Middlewares
■ Funções que processam uma requisição/resposta HTTP
■ Realizam as seguintes tarefas:
▶ Executam qualquer código
▶ Alteram os objetos de requisição e resposta
▶ Finalizam um requisição HTTP
▶ Chamam o próximo middleware
■ Tipos de middlewares:
▶ Application-level
▶ Router-level
▶ Error-handling
▶ Built-in
▶ Third-party
19
Criando Middlewares (Application-level)
20
Gerenciando erros (Error-handling)
21
Arquivos estáticos
22
Rotas
23
Definindo rotas
24
Curingas e Parâmetros
25
Gerenciadores de rotas
26
Parâmetros
27
Objeto de requisição
■ headers / rawHeaders
■ url
■ method
■ params
■ query
■ body
■ cookies
28
Parâmetros
■ http://www.meusite.com/produtos/geral/1
■ app.get("/produtos/:categ/:id/", myfunc)
■ const categ = req.params.categ
■ const id = req.params.id
■ const {categ, id} = req.params
29
Query String
■ http://www.meusite.com/prods?categ=geral&id=1
■ app.get("/produtos", myfunc)
■ const categ = req.query.categ
■ const id = req.query.id
■ const {categ, id} = req.query
30
Body params
■ app.post("/produtos", myfunc)
■ const categ = req.body.categ
■ const id = req.body.id
■ const {categ, id} = req.body
31
Body Parser
32
Body parser com o Express
33
Boas práticas
34
Validação de parâmetros
35
Joi
36
Criação do schema
37
Validação
■ Schema válido:
schema.validate({ username: ’abc’, birth_year: 1994 })
// -> { value: { username: ’abc’, birth_year: 1994 } }
■ Schema inválido:
schema.validate({});
// -> { value: {}, error: ’"username"is required’ }}
38
Validação sem usar um modelo
■ Joi.string().required().validate(valor)
■ Joi.number().greater(0).validate(valor)
39
Tipos de dados suportados
■ Number
greater, integer, less, max, min, multiple, negative, port, positive, precision, sign
■ String
alphanum, creditCard, domain, email, ip, length, lowercase, max, min, pattern, trim, uppercase
■ Date
greater, less, max, min
40