Back-end / Express
- #Express
1- Introdução
O Back-end é a parte de um aplicativo que lida com a lógica do servidor, banco de dados e outras tarefas relacionadas ao processamento de dados. Ele é responsável por receber solicitações do cliente, processá-las e enviar uma resposta adequada. O Express é um framework Node.js que ajuda a criar aplicativos da web do lado do servidor. Ele fornece uma estrutura robusta para criar aplicativos da web e APIs RESTful. O Express é um dos frameworks mais populares para o desenvolvimento de aplicativos da web do lado do servidor.
O Node.js é um ambiente de tempo de execução JavaScript que permite que os desenvolvedores criem aplicativos da web do lado do servidor em JavaScript. Ele é usado fora do contexto de um navegador e é executado diretamente no computador ou no servidor. O Node.js é projetado para otimizar a taxa de transferência e a escalabilidade em aplicativos da web. Ele é uma ótima combinação para resolver muitos problemas comuns no desenvolvimento da web, como aplicações em tempo real.
O Express é construído em cima do Node.js e fornece uma estrutura robusta para criar aplicativos da web e APIs RESTful. Ele oferece soluções para gerenciar solicitações de diferentes verbos HTTP em diferentes URLs e integrar "view engines" para inserir dados nos templates. O Express é altamente personalizável e pode ser usado para criar aplicativos da web de qualquer tamanho.
# Express.js Cheat Sheet
Este é um guia rápido para os conceitos básicos do Express.js, um framework para aplicações web para Node.js.
## Índice
- [Introdução](#introdução)
- [Instalação](#instalação)
- [Seu Primeiro Servidor](#seu-primeiro-servidor)
- [Routing](#routing)
- [Middleware](#middleware)
- [Manipulação de Erros](#manipulação-de-erros)
- [Trabalhando com Dados](#trabalhando-com-dados)
- [Templates e Views](#templates-e-views)
- [APIs e JSON](#apis-e-json)
- [Segurança](#segurança)
- [Desempenho](#desempenho)
- [Testes](#testes)
- [Deploy](#deploy)
## Introdução
Express.js é um framework para Node.js que proporciona recursos mínimos para construção de servidores web e APIs. É projetado para ser flexível e facilita a configuração de rotas e middlewares para responder a requisições HTTP.
## Instalação
Para instalar o Express.js, você precisa ter o Node.js e o NPM (Node Package Manager) instalados em seu ambiente. O NPM vem com o Node.js, então, ao instalar o Node.js, você também terá o NPM. Você pode verificar se eles estão instalados corretamente com os seguintes comandos:
node --version
npm --version
Se esses comandos retornarem as versões instaladas, você está pronto para continuar. Caso contrário, você precisa instalar o Node.js.
Instalação do Node.js:
Para instalar o Node.js, visite nodejs.org e baixe a versão recomendada para o seu sistema operacional. O instalador do Node.js inclui o NPM.
Configuração do projeto Node.js:
Uma vez que o Node.js e o NPM estejam instalados, você pode criar e configurar seu projeto de back-end. Aqui estão os passos:
1- Crie uma nova pasta para o seu projeto e navegue até ela:
mkdir meu-projeto-backend
cd meu-projeto-backend
2- Inicie um novo projeto Node.js:
npm init -y
O comando npm init -y cria um novo arquivo package.json com as configurações padrão. Se você quiser personalizar as configurações, você pode omitir o -y e responder às perguntas interativas.
Então, você pode adicionar o Express ao seu projeto com o seguinte comando:
npm install express --save
Isso vai adicionar o Express às dependências do seu projeto e atualizar o arquivo package.json automaticamente.
3- Crie um novo arquivo para o seu aplicativo, como app.js:
touch app.js # ou use qualquer editor de texto para criar o arquivo
Execute o servidor:
node app.js
4- (Opcional) Instale o Nodemon para desenvolvimento:
O Nodemon é uma ferramenta que ajuda a desenvolver aplicações baseadas em Node.js ao reiniciar automaticamente o servidor quando detecta alterações no arquivo.
npm install --save-dev nodemon
Você pode então adicionar um script no seu package.json para executar o servidor com o Nodemon:
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
}
Agora você pode iniciar seu servidor em modo de desenvolvimento com npm run dev.
Seu Primeiro Servidor
Para criar um servidor basico com Express, você pode usar o seguinte código:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Olá, Mundo!');
});
app.listen(3000, () => {
console.log('Servidor executando na porta 3000');
});
Routing
O roteamento refere-se a como uma aplicação responde a uma solicitação do cliente para um determinado endpoint, que é uma URI (ou caminho) e um método de solicitação HTTP específico (GET, POST, etc.).
app.get('/about', (req, res) => {
res.send('Sobre nós');
});
app.post('/login', (req, res) => {
// Lógica de autenticação
});
Middleware
Middleware são funções que têm acesso ao objeto de solicitação (req), ao objeto de resposta (res) e à próxima função de middleware no ciclo de solicitação-resposta do aplicativo.
app.use((req, res, next) => {
console.log('Middleware 1');
next();
});
app.use((req, res, next) => {
console.log('Middleware 2');
next();
});
Manipulação de Erros
O Express vem com um middleware de manipulação de erros integrado que você pode personalizar.
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Algo deu errado!');
});
Trabalhando com Dados
Express pode ser facilmente integrado com bancos de dados para armazenar e recuperar dados.
// Exemplo de integração com MongoDB
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('url-do-seu-db', (err, client) => {
// Lógica de banco de dados
});
Templates e Views
Express pode ser usado com sistemas de template como Pug, EJS, Handlebars, etc., para gerar HTML a partir de templates.
app.set('view engine', 'pug');
app.get('/', (req, res) => {
res.render('index', { title: 'Hey', message: 'Hello there!' });
});
APIs e JSON
Express pode enviar respostas JSON, o que o torna ideal para construir APIs.
app.get('/api/users', (req, res) => {
res.json({ users: ['user1', 'user2'] });
});
Segurança
Use módulos como helmet para definir cabeçalhos HTTP relacionados à segurança para proteger seu app.
const helmet = require('helmet');
app.use(helmet());
Desempenho
O Express pode ser otimizado para produção, comprimindo respostas, caching de views, etc.
const compression = require('compression');
app.use(compression());
Testes
Você pode testar seu aplicativo Express com ferramentas como Mocha e Chai.
// Exemplo de teste com Mocha e Chai
const expect = require('chai').expect;
const request = require('request');
describe('Index Page', function() {
it('status', function(done){
request('http://localhost:3000', function(error, response, body) {
expect(response.statusCode).to.equal(200);
done();
});
});
});
Deploy
O deploy de um app Express pode ser feito em plataformas como Heroku, AWS, entre outros.
# Exemplo de deploy no Heroku
git add .
git commit -am "make it better"
git push heroku master