Alan Ferreira dos Santos

 

Formado pelo Centro Universitário Integrado (2010)

Convertido para Web e trabalhando nisso desde 2011

Metodologias Ágeis - Node.js - Vue.js - PHP - React Native

 

 

alanfsantos

Quiz

 

 

Node.js

 

Ambiente de execução Javascript server-side, que não depende de um browser, não é uma linguagem de programação.

Utilizada por grandes empresas no mercado de tecnologia, como Netflix, Uber e Linkedin.

Altamente escalável, com suporte na maioria de serviços em nuvem, como AWS, Google Cloud e Digital Ocean.

 

História

 

Criado em 2009, apesar do JavaScript possuir mias de 20 anos.

Favorecida pela rápida evolução da Web nos últimos anos.

Características

 

Assíncrona e single-thread.

Apenas uma thread é responsável por tratar as requisições, chamada de Event Loop.

 

Vantagens

Flexibilidade

 

Tem a maior plataforma de gerenciamento de pacotes, o NPM.

Leveza

 

Necessita de poucos recursos computacionais.

Combinação com ferramentas como Docker trazem ganhos significativos na velocidade de deploy.

Indicada para arquitetura de micro serviços e serverless.

 

Alta produtividade

 

Maior repositório do mundo.

Mesma linguagem do front-end, full-stack.

Deploys mais rápidos.

 

Desvantagens

 

JS pode incomodar pessoas que gostam de linguagens rígida.

JS é uma linguagem recente.

Assincronismo complica conforme a complexidade de requisições aumenta. Recursos como Async/Await (ES7) e Promisses (ES6) resolvem problemas de aninhamento de funções e diminuem a complexidade de depuração.

Pra que serve?

Aplicações

 

  • APIS;

  • Back-end de jogos e apps de mensagens;

  • Aplicações em tempo real com Socket.io;

 

Pacotes Node.js

NPM

 

O Node Package Manager consiste muito mais em um kit de ferramentas para desenvolvimento do que somente um instalador de pacotes.

 

Extremamente lento.

Yarn

 

Gerenciador de dependências mantido por um grupo de desenvolvedores do Babel JS, Facebook, Ember.js entre outros, criado para ser uma opção ao desenvolvedor.

Recomendado para projetos com muitas dependências.

Compatível com os registros NPM.

npm install -g yarn
yarn -v

Instalando o Yarn

mkdir bootcamp-api
cd bootcamp-api
yarn init

Inicializando o projeto

Visual Code Studio

{
  "name": "nodeapi",
  "version": "1.0.0",
  "main": "app.js",
  "license": "MIT",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    
  },
  "devDependencies": {
    
  }
}

Entendendo o package.json

echo "console.log('Minha aplicação Node.js')" > index.js

Criando o arquivo app.js

Rodando a aplicação

yarn start

Métodos HTTP

HTTP

 

Hypertext Transfer Protocol é um o protocolo de transferência de dados base da Web.

Métodos

GET

 

O método GET é utilizado quando existe a necessidade de se obter um recurso. Ao executar o método GET sob um recurso, uma representação será devolvida pelo servidor.

Em aplicações Web, normalmente é retornado uma representação HTML.

POST

 

Utilizamos o método POST quando desejamos criar algum recurso no servidor a partir de uma determinada representação. Exemplo disso é quando fazemos a submissão de algum formulário em uma página Web.

PUT

 

Semelhante ao método POST, a ideia básica do método PUT é permitir a atualização de um recuso no servidor.

DELETE

 

O método DELETE é utilizado com o intuito de remover um recurso em um determinado servidor.

Respostas

 

  • 1XX – Informações Gerais

  • 2XX – Sucesso

  • 3XX – Redirecionamento

  • 4XX – Erro no cliente

  • 5XX – Erro no servidor.

Express

Express

 

O Express.js é um dos frameworks mais utilizados do Node.js

É minimalista, rápido e possui inúmeras contribuições implementadas:

  • Flexível;

  • Utilitários HTTP para criação de apis;

  • Ótimo desempenho.

yarn add express

Adicionado o Express

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
})

app.listen(port, () => {
  console.log(`Aplicação rodando em http://localhost:${port}`);
})

Criando sua primeira rota

Roteamento

 

Determinação de como um aplicativo responde a uma solicitação do cliente por um endpoint específico, que é uma URI (ou caminho) e um método de solicitação HTTP específico (GET, POST, PUT ou DELETE).

var express = require('express');
var app = express();

app.METHOD(PATH, HANDLER)

Roteamento

var express = require('express');
var app = express();

app.get('/', function(req, res) {
  res.send('Bem vindo!');
});

Roteamento

app.get('/', function(req, res) {
  if (req.params.id) { // ... }
  
  if (req.body.login) { // ... }
  
  res.send('Bem vindo!');
});

Objetos req e res

 

Ao implementar uma rota, temos acesso a alguns objetos importantes nas requisições HTTP.

req: contém a requisição que está sendo enviada.

res: objeto pelo qual manipulamos a resposta dada a requisição.

nodemon

 

Pacote para Node.js que reinicia a aplicação caso sejam encontradas alterações em arquivos do projeto, ideal para ambientes de dev.

{
  "name": "nodeapi",
  ...
  "scripts": {
    "start": "nodemon app.js"
  }
}
yarn add -D nodemon

Métodos de Respostas

express.Router

 

Classe para criar rotas modulares e montáveis.

const express = require('express');
const router = express.Router();

router.get('/', function(req, res) {
  res.json([]);
});

module.exports = router;

module.exports

 

Responsável por tornar visível nossos códigos em outras partes da aplicação, para que futuramente possa ser carregado em outro local por meio de require.

const express = require('express');
const usuario = require('./routes/usuario');
const app = express();

app.use('/usuario', usuario);

Body no formato JSON

 

Faremos a conversão do body da requisição para o formato JSON usando o Express.

const express = require('express');
const usuario = require('./routes/usuario');
const app = express();

app.use(express.json());

app.use('/usuario', usuario);

Body no formato JSON

 

Assim, podemos acessar os dados que estão chegando por meio do body da requisição HTTP.

router.post('/', function(req, res) {
  console.log(req.body);
  res.json({});
});

Insomnia

 

Software para escrever requisições HTTP de maneira fácil e visual.

Desafio #01

 

Criar uma aplicação Node.js, no formato de API, aplicando os padrões REST que possua rotas de forma estruturada e montável para os seguintes recursos:

 

  • Cliente;
  • Pedido;
  • Produto;
  • Tipo do Produto.

Regras de Negócio

Aplicando

Desafio #02

 

Essa atividade deverá ser realizada individualmente, seguindo os  passos abaixo:

  1. Criar um repositório no GitHub;

  2. Inicializar um repositório local;

  3. Adicionar o repositório remoto do GitHub ao repositório local. 

Node.js

By Alan Ferreira dos Santos