
O que é?
Node.js® é uma ambiente de execução de JavaScript disponível para várias plataformas, de código aberto e gratuita, que permite os programadores criar servidores, aplicações da Web, ferramentas de linha de comando e programas de automação de tarefas.
Checar a versão instalada
$ node -v
Conhecendo o NPM
$ npm -v
$ npm --help
Usaremos a versão 20.16 do Node.js durante todo nosso curso.
Criar o projeto Node.js
$ npm init -y
Instalação do Express
$ npm i express
Criação do servidor
Criar arquivo src/index.js
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Bem vindo ao Curso de Node.js");
});
app.listen(3001, () => {
console.log("Servidor ativo na porta 3000");
});
Configurar o projeto para usar módulos do ECMAScript
Adicionar ao package.json:
"type": "module",
Instalação das dependências
$ npm i typescript @types/node @types/express -D
Usar extends de configuração recomendada
$ npm i @tsconfig/recommended -D
Configuração do tsconfig.json
{
"extends": "@tsconfig/recommended/tsconfig.json",
"compilerOptions": {
"rootDir": "src", // Diretório de códigos TypeScript
"outDir": "lib", // Diretório de saída para os arquivos compilados
"sourceMap": true, // Gera mapas de origem para facilitar o debug
"noImplicitAny": true, // Não permite declaração de variáveis ou parâmetros sem tipo
"noImplicitReturns": true, // Verifica se todas as funções possuem tipo de retorno informado
"noEmitOnError": true, // Não gera o código JS caso haja algum erro durante o processo de compilação
"strictNullChecks": true, // Força a verificação de valores null ou undefined
"noUnusedLocals": true // Sinaliza quando existem variáveis declaradas e não utilizadas
},
"compileOnSave": true,
"include": ["src/**/*"],
"exclude": ["**/*.spec.ts"]
}
Transpilação com tsc
$ tsc index.ts
Instalação do tsc-watch
$ npm i tsc-watch -D
Criação de script "start" para iniciar o servidor no package.json:
"scripts": {
"start": "npx tsc-watch --onSuccess \"node ./lib/index.js\"",
},
Instalar o Firebase Admin SDK no projeto:
$ npm i firebase-admin
Inicializar o Firebase Admin no index.ts:
import { initializeApp } from "firebase-admin/app";
initializeApp();
Gerar API Key no Firebase Console:
Importar arquivo .json no projeto
Criar arquivo .env
Adicionar a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS no arquivo .env:
GOOGLE_APPLICATION_CREDENTIALS=<api-key>.json
Add no .gitignore
<api-key>.json
.env
Atualização do Firebase
Esta aula foi gravada usando a versão 10.13.1 do Firebase. Porém, quando você estiver fazendo essa aula, provavelmente estará usando a versão 11.X ou superior do Firebase.
Você pode conferir as versões de suas dependências no arquivo package.json.
Nessa versão, foi alterado a forma que o Firebase lança a exceção FirebaseError no seu arquivo AuthService. Com isso, sua validação irá falhar. Mas não se preocupe, para corrigir o erro basta trocar o seguinte trecho de código no seu AuthService:
if (err instanceof FirebaseError) {
if (err.code === "auth/invalid-credential") {
throw new UnauthorizedError();
}
}
Por esse trecho de código:
if (err.code === "auth/invalid-credential") {
throw new UnauthorizedError();
}
Ou seja, agora você não precisa mais comparar se o erro é instância de FirebaseError, basta fazer a comparação da propriedade code direto.
Qualquer dúvida não hesite em me perguntar.
Abraço e bons estudos!
Expressão Regular para validação do telefone:
/(^[1-9]{1}[0-9]{1}[0-9]{8}$)|(^[1-9]{1}[0-9]{1}[9]{1}[0-9]{8}$)/
Seja muito bem vindo ao Curso de Criação de APIs RESTful com Node.js, Express, TypeScript e Firebase. Durante esse curso iremos desenvolver uma API REST usando o TypeScript para gerir os dados de um E-Commerce (aplicativos de delivery, sistemas de venda online, sistemas de força de vendas, etc).
Nesse curso você vai aprender:
O conceito de APIs REST/RESTful
Como configurar seu ambiente de desenvolvimento
Instalação das ferramentas para criação de APIs
Node.js
Postman
Instalação de dependências com NPM
Express framework
ts-watch
TypeScript
Firebase
Express Async Handler
Uso do TypeScript no back-end
Criação e gerenciamento de rotas com Express
Como usar os métodos HTTP corretamente
Aplicar o padrão Controller para gerenciar suas rotas
Implementar o padrão Service para implementar as regras de negócio da aplicação
Usar o padrão de projeto Repository e centralizar as regras de persistência de dados
Validação de dados vindos do cliente com Joi e Celebrate
Tratamento de erros da API
Persistência de dados no Cloud Firestore
Cadastro e Autenticação usuários no Authentication
Upload de imagens para o Cloud Storage
Teste de funcionamento das rotas da API
Deploy da API para o Google Cloud Functions
Monitoramento de erros e logs da API na Google Cloud
Pré requisitos:
Para melhor proveito do curso, é importante que você tenha familiaridade com alguma linguagem de programação.
Forte abraço!