Preparando para integrar com Frontend
Área: Backend | Nível recomendado: Iniciante
Vídeo
Link direto: https://youtu.be/_FNqVtgfYQ0
Tópicos
Introdução ao CORS:
Explicação do que é CORS e por que é necessário em aplicações modernas web.
Demonstração prática de como habilitar CORS em uma aplicação Express.js.
Tratamento de Erros:
Boas práticas para o tratamento de erros para garantir que o frontend possa reagir adequadamente.
Implementação de tratamento de erros assíncronos usando
express-async-errors
.Tratamento de rotas não encontradas (404) para retornar respostas JSON.
Tratamento de erros para ObjectId inválido no MongoDB.
Validação de Dados:
Importância da validação de dados recebidos pelo backend.
Introdução às bibliotecas de validação de dados, como Joi.
Implementação de validações de payload usando Joi.
Design de API focado no Frontend:
Princípios de design de API que facilitam o consumo pelo frontend.
Exemplos de como unificar endpoints e simplificar payloads para reduzir a carga no frontend.
Melhores práticas de design de API, incluindo consistência, documentação, paginação e versionamento.
Material de Apoio
Repositório no GitHub
PDF para Download
Miro
Exercícios de Fixação
Exercícios de Validação
Desafio de Código
Implemente a validação de dados e o tratamento de erros usando Joi e middlewares em uma aplicação Express.
Arquivo Inicial
const express = require('express');
const app = express();
app.use(express.json());
const tarefas = [];
app.post('/tarefas', function (req, res) {
const novaTarefa = req.body;
if (!novaTarefa.titulo || !novaTarefa.descricao || !novaTarefa.status) {
return res.status(400).send('Corpo da requisição deve conter as propriedades titulo, descricao e status.');
}
tarefas.push(novaTarefa);
res.status(201).send(novaTarefa);
});
app.listen(3000, function () {
console.log("Servidor rodando em http://localhost:3000");
});
Tarefas
Validação de Dados com Joi:
Implemente a validação de dados recebidos no endpoint
/tarefas
usando Joi.
Tratamento de Erros:
Adicione middlewares para tratamento de erros na aplicação.
Configuração de CORS:
Habilite CORS na aplicação.
Código Esperado
Validação de Dados e Tratamento de Erros
const express = require('express');
const cors = require('cors');
const Joi = require('joi');
const app = express();
app.use(express.json());
app.use(cors());
const tarefas = [];
const tarefaSchema = Joi.object({
titulo: Joi.string().min(3).required(),
descricao: Joi.string().min(5).required(),
status: Joi.string().valid('pendente', 'concluída').required()
});
app.post('/tarefas', function (req, res, next) {
const { error, value } = tarefaSchema.validate(req.body);
if (error) {
return res.status(400).send(error.details[0].message);
}
tarefas.push(value);
res.status(201).send(value);
});
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send('Algo deu errado!');
});
app.listen(3000, function () {
console.log("Servidor rodando em http://localhost:3000");
});
Feedback: Certifique-se de validar os dados recebidos com Joi e trate adequadamente os erros usando middlewares. Habilite CORS para permitir requisições de diferentes origens.
Revisão de Código
Analise o código a seguir, encontre e corrija o erro relacionado à configuração de CORS e tratamento de erros na integração com frontend.
const express = require('express');
const app = express();
app.use(express.json());
const tarefas = [];
app.post('/tarefas', function (req, res) {
const novaTarefa = req.body;
if (!novaTarefa.titulo || !novaTarefa.descricao || !novaTarefa.status) {
return res.status(400).send('Corpo da requisição deve conter as propriedades titulo, descricao e status.');
}
tarefas.push(novaTarefa);
res.status(201).send(novaTarefa);
});
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send('Algo deu errado!');
});
app.listen(3000, function () {
console.log("Servidor rodando em http://localhost:3000");
});
Projeto Prático
Implemente um endpoint para criar tarefas em uma aplicação ExpressJS. As tarefas devem ter as propriedades "título", "descrição" e "status". Utilize CORS, valide os dados usando Joi e implemente o tratamento de erros.
Arquivo Inicial
const express = require('express');
const cors = require('cors');
const Joi = require('joi');
const app = express();
app.use(express.json());
app.use(cors());
const tarefas = [];
const tarefaSchema = Joi.object({
titulo: Joi.string().min(3).required(),
descricao: Joi.string().min(5).required(),
status: Joi.string().valid('pendente', 'concluída').required()
});
app.post('/tarefas', function (req, res, next) {
const { error, value } = tarefaSchema.validate(req.body);
if (error) {
return res.status(400).send(error.details[0].message);
}
tarefas.push(value);
res.status(201).send(value);
});
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send('Algo deu errado!');
});
app.listen(3000, function () {
console.log("Servidor rodando em http://localhost:3000");
});
Tarefas
Validação de Dados com Joi:
Implemente a validação de dados recebidos no endpoint
/tarefas
usando Joi.
Tratamento de Erros:
Adicione middlewares para tratamento de erros na aplicação.
Configuração de CORS:
Habilite CORS na aplicação.
Last updated