Construindo o Endpoint GET para Todos os Posts
Vamos explorar como implementar a rota "GET ALL POSTS" no arquivo postsRoutes.js
. Esta rota recupera uma lista de todas as postagens da fonte de dados (database/posts.json
) e as envia como resposta para o cliente.
Importação dos Módulos e Dependências Necessárias
No início do arquivo, são importados os módulos e dependências necessários:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express
: Importação do framework Express para construção das rotas;fs/promises
: Este módulo fornece operações assíncronas de arquivos, utilizado para leitura de dados de um arquivo JSON;validatePostData
: Embora não seja utilizado nesta rota, o middlewarevalidatePostData
é importado, sendo útil para validação de dados em capítulos posteriores.
Inicialização de um Router do Express
Inicialização de uma instância de um router do Express, responsável por gerenciar todas as rotas definidas neste arquivo:
const router = express.Router();
Criação de uma Função para Leitura de Dados
Definição de uma função assíncrona chamada readData para ler dados de um arquivo JSON. Esta função garante a recuperação adequada dos dados e realiza o tratamento de erros:
// Function to read data from the JSON file
async function readData() {
try {
// Read the contents of the `posts.json` file
const data = await fs.readFile("./database/posts.json");
// Parse the JSON data into a JavaScript object
return JSON.parse(data);
} catch (error) {
// If an error occurs during reading or parsing, throw the error
throw error;
}
}
fs.readFile
: Utilização defs.readFile
para ler o conteúdo do arquivo./database/posts.json
;JSON.parse
: Os dados obtidos do arquivo são convertidos para um objeto JavaScript;- Tratamento de Erros: Caso ocorram erros durante a leitura ou conversão, eles são capturados e o erro é lançado.
Definição da Rota "GET ALL POSTS"
Definição da rota "GET ALL POSTS" dentro do router:
// GET ALL POSTS
router.get("/", async (req, res, next) => {
try {
// Call the `readData` function to retrieve the list of posts
const data = await readData();
// Send the retrieved data as the response
res.status(200).send(data);
} catch (error) {
// If an error occurs during data retrieval or sending the response
console.error(error.message); // Log the error to the console for debugging
}
});
Definição da Rota: Especificação de que esta rota trata requisições HTTP GET para o caminho raiz (/
).
Manipulador da Rota: Dentro da função manipuladora da rota:
- Chamada da função
readData
para obter a lista de posts do arquivo JSON; - Em caso de sucesso na obtenção dos dados, envio dos dados como resposta utilizando
res.send(data)
; - Caso ocorram erros durante o processo, captura do erro, registro no console para depuração (
console.error(error.message)
) e continuidade.
Código completo do arquivo postsRoutes.js neste passo
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
const router = express.Router();
// Function to read data from the JSON file
async function readData() {
try {
// Read the contents of the `posts.json` file
const data = await fs.readFile("./database/posts.json");
// Parse the JSON data into a JavaScript object
return JSON.parse(data);
} catch (error) {
// If an error occurs during reading or parsing, throw the error
throw error;
}
}
// GET ALL POSTS
router.get("/", async (req, res, next) => {
try {
// Call the `readData` function to retrieve the list of posts
const data = await readData();
// Send the retrieved data as the response
res.status(200).send(data);
} catch (error) {
// If an error occurs during data retrieval or sending the response
console.error(error.message); // Log the error to the console for debugging
}
});
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how error handling works in this route?
What would be the next step to add more routes, like "GET POST BY ID"?
How does the readData function handle missing or corrupted JSON files?
Awesome!
Completion rate improved to 2.56
Construindo o Endpoint GET para Todos os Posts
Deslize para mostrar o menu
Vamos explorar como implementar a rota "GET ALL POSTS" no arquivo postsRoutes.js
. Esta rota recupera uma lista de todas as postagens da fonte de dados (database/posts.json
) e as envia como resposta para o cliente.
Importação dos Módulos e Dependências Necessárias
No início do arquivo, são importados os módulos e dependências necessários:
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
express
: Importação do framework Express para construção das rotas;fs/promises
: Este módulo fornece operações assíncronas de arquivos, utilizado para leitura de dados de um arquivo JSON;validatePostData
: Embora não seja utilizado nesta rota, o middlewarevalidatePostData
é importado, sendo útil para validação de dados em capítulos posteriores.
Inicialização de um Router do Express
Inicialização de uma instância de um router do Express, responsável por gerenciar todas as rotas definidas neste arquivo:
const router = express.Router();
Criação de uma Função para Leitura de Dados
Definição de uma função assíncrona chamada readData para ler dados de um arquivo JSON. Esta função garante a recuperação adequada dos dados e realiza o tratamento de erros:
// Function to read data from the JSON file
async function readData() {
try {
// Read the contents of the `posts.json` file
const data = await fs.readFile("./database/posts.json");
// Parse the JSON data into a JavaScript object
return JSON.parse(data);
} catch (error) {
// If an error occurs during reading or parsing, throw the error
throw error;
}
}
fs.readFile
: Utilização defs.readFile
para ler o conteúdo do arquivo./database/posts.json
;JSON.parse
: Os dados obtidos do arquivo são convertidos para um objeto JavaScript;- Tratamento de Erros: Caso ocorram erros durante a leitura ou conversão, eles são capturados e o erro é lançado.
Definição da Rota "GET ALL POSTS"
Definição da rota "GET ALL POSTS" dentro do router:
// GET ALL POSTS
router.get("/", async (req, res, next) => {
try {
// Call the `readData` function to retrieve the list of posts
const data = await readData();
// Send the retrieved data as the response
res.status(200).send(data);
} catch (error) {
// If an error occurs during data retrieval or sending the response
console.error(error.message); // Log the error to the console for debugging
}
});
Definição da Rota: Especificação de que esta rota trata requisições HTTP GET para o caminho raiz (/
).
Manipulador da Rota: Dentro da função manipuladora da rota:
- Chamada da função
readData
para obter a lista de posts do arquivo JSON; - Em caso de sucesso na obtenção dos dados, envio dos dados como resposta utilizando
res.send(data)
; - Caso ocorram erros durante o processo, captura do erro, registro no console para depuração (
console.error(error.message)
) e continuidade.
Código completo do arquivo postsRoutes.js neste passo
const express = require("express");
const fs = require("fs/promises");
const validatePostData = require("../middlewares/validateData");
const router = express.Router();
// Function to read data from the JSON file
async function readData() {
try {
// Read the contents of the `posts.json` file
const data = await fs.readFile("./database/posts.json");
// Parse the JSON data into a JavaScript object
return JSON.parse(data);
} catch (error) {
// If an error occurs during reading or parsing, throw the error
throw error;
}
}
// GET ALL POSTS
router.get("/", async (req, res, next) => {
try {
// Call the `readData` function to retrieve the list of posts
const data = await readData();
// Send the retrieved data as the response
res.status(200).send(data);
} catch (error) {
// If an error occurs during data retrieval or sending the response
console.error(error.message); // Log the error to the console for debugging
}
});
Obrigado pelo seu feedback!