Node.js
Conceitos
O que é Node.js ?
- JavaScript no back-end;
- Não lidamos com eventos do usuário final;
- Rotas e integrações;
- Plataforma (não linguagem);
- Construída em cima da V8;
- Comparável a PHP / Ruby / Python / Go;
O que é NPM?
- Instalar bibliotecas de terceiros;
- Fornecer bibliotecas;
- Comparáveis:
- Composer do PHP;
- Gems do Ruby;
- PIP do Python;
Características do Node
- Arquitetura Event-loop
- Baseada em eventos (Rotas na maioria das vezes);
- Call Stack;
- Node single-thread;
- C++ por trás com libuv;
- Background threads;
- Non-blocking I/O;
Frameworks
- ExpressJS como base:
- Sem opinião;
- Ótimo para iniciar;
- Micro-serviços
- Frameworks opinados:
- AdonisJS;
- NestJS;
Instalações e Configurações
Instalação do Node.js
Instalação do Node.js via Chocolatey no Windows
# Utilizando o Chocolatey$ cinst nodejs
Instalação do Node.js via NVM em Linux/Mac
https://yarnpkg.com/lang/en/docs/install/#debian-stable
API Rest
Como funciona?
- Fluxo de requisição e resposta;
- Requisição feita por um cliente;
- Resposta retornada através de uma estrutura de dados;
- Cliente recebe resposta e processa resultado;
- As rotas utilizam métodos HTTP:
- GET -
http://minhaapi.com/users
- POST -
http://minhaapi.com/users
- PUT -
http://minhaapi.com/users/1
- DELETE -
http://minhaapi.com/users/1
- GET -
Benefícios
- Múltiuplos clientes (front-end), mesmo back-end;
- Protocolo de comunicação padronizado;
- Mesma estrutura para web / mobile / API pública;
- Comunicação com serviços externos
HTTP Codes
- 1xx: Informational
- 2xx: Success
- 200: SUCCESS
- 201: CREATED
- 3xx: Redirection
- 301: MOVED PERMANENTLY
- 302: MOVED
- 4xx: Client Error
- 400: BAD REQUEST
- 401: UNAUTHORIZED
- 404: NOT FOUND
- 5xx: Server Error
- 500: INTERNAL SERVER ERRROR
Métodos HTTP
- GET: Buscar informações do back-end
- POST: Criar uma informação no back-end
- PUT: Alterar uma ou mais informações no back-end
- PATCH: Alterar uma informação muito específica no back-end
- DELETE: Deletar uma ou mais informações no back-end
Tipos de Parâmetros
- QUERY PARAMS: Filtros e Paginação
- ROUTE PARAMS: Identificar recursos (Atualizar/Deletar)
- REQUEST BODY: Conteúdo na hora de criar ou editar um recurso (JSON)
Middleware
É um interceptador de requisições que pode interromper totalmente uma requisição ou alterar dados da requisição.
Formato de um middleware:
function middleware(request, response, next) {// ...next();// ...}