Erstellung des GET-Endpunkts für Beiträge nach ID
In diesem Abschnitt wird die Implementierung der Route "GET POST BY ID" in der Datei postsRoutes.js file behandelt. Diese Route ruft einen bestimmten Beitrag anhand seiner eindeutigen Kennung (id) ab und gibt ihn zurück, wobei die Kennung als Teil der URL übergeben wird.
Hinweis
Der Begriff 'Datenbank' bezieht sich hier speziell auf die Datei
posts.jsonim Ordnerdatabase.
Routen-Definition
Der folgende Code definiert die Route "GET POST BY ID" mit router.get():
router.get("/post/:id", async (req, res, next) => { ... }
- Diese Route ist für die Verarbeitung von HTTP-GET-Anfragen konfiguriert;
- Der Routenpfad
/post/:identhält einen Parameter:id, der die Post-ID aus der URL übernimmt.
Extrahieren der Post-ID
Die Post-ID wird aus den Request-Parametern mit req.params.id extrahiert:
const postId = req.params.id;
Diese Zeile übernimmt den Wert von :id aus der URL und stellt ihn für die weitere Verarbeitung bereit.
Suchen des Posts in der Datenbank
Anschließend wird nach dem Post mit der passenden ID in der Datenbank gesucht:
const data = await readData();
const post = data.find((post) => post.id === postId);
- Die asynchrone Funktion
readDatawird verwendet, um Daten aus der JSON-Datei abzurufen; - Die Methode
find()wird eingesetzt, um einen Post mit passender ID in den abgerufenen Daten zu finden; - Die Variable
postenthält den gefundenen Post oderundefined, falls keine Übereinstimmung vorliegt.
Behandlung der Antwort
Die Antwort wird abhängig davon behandelt, ob ein Beitrag gefunden wurde oder nicht:
if (!post) {
res.status(404).json({ error: "Post not found" });
} else {
res.status(200).send(post);
}
- Wenn kein Beitrag gefunden wurde (d. h.
postistundefined), wird eine 404-Antwort zusammen mit einer Fehlermeldung gesendet, die darauf hinweist, dass der angeforderte Beitrag nicht gefunden wurde; - Wenn ein Beitrag gefunden wurde, wird dieser mit dem Statuscode 200 (OK) als Antwort gesendet.
Fehlerbehandlung
Der Routencode wird in einen try-catch-Block eingebettet, um potenzielle Fehler bei der Datenabfrage oder der Verarbeitung der Anfrage zu behandeln. Alle auftretenden Fehler werden zur Fehlersuche in der Konsole protokolliert:
try {
// ... (code for retrieving and processing data)
} catch (error) {
console.error(error.message);
}
Vollständiger Code der Datei postsRoutes.js in diesem Schritt
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
}
});
// GET POST BY ID
router.get("/post/:id", async (req, res, next) => {
try {
// Extract the post ID from the request parameters
const postId = req.params.id;
// Read data from the JSON file
const data = await readData();
// Find the post with the matching ID
const post = data.find((post) => post.id === postId);
// If the post is not found, send a 404 response
if (!post) {
res.status(404).json({ error: "Post not found" });
} else {
// If the post is found, send it as the response
res.status(200).send(post);
}
} catch (error) {
// Handle errors by logging them and sending an error response
console.error(error.message);
}
});
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how the readData function works in more detail?
What should I do if I get an error when trying to fetch a post by ID?
How can I test this GET POST BY ID route using a tool like Postman?
Awesome!
Completion rate improved to 2.56
Erstellung des GET-Endpunkts für Beiträge nach ID
Swipe um das Menü anzuzeigen
In diesem Abschnitt wird die Implementierung der Route "GET POST BY ID" in der Datei postsRoutes.js file behandelt. Diese Route ruft einen bestimmten Beitrag anhand seiner eindeutigen Kennung (id) ab und gibt ihn zurück, wobei die Kennung als Teil der URL übergeben wird.
Hinweis
Der Begriff 'Datenbank' bezieht sich hier speziell auf die Datei
posts.jsonim Ordnerdatabase.
Routen-Definition
Der folgende Code definiert die Route "GET POST BY ID" mit router.get():
router.get("/post/:id", async (req, res, next) => { ... }
- Diese Route ist für die Verarbeitung von HTTP-GET-Anfragen konfiguriert;
- Der Routenpfad
/post/:identhält einen Parameter:id, der die Post-ID aus der URL übernimmt.
Extrahieren der Post-ID
Die Post-ID wird aus den Request-Parametern mit req.params.id extrahiert:
const postId = req.params.id;
Diese Zeile übernimmt den Wert von :id aus der URL und stellt ihn für die weitere Verarbeitung bereit.
Suchen des Posts in der Datenbank
Anschließend wird nach dem Post mit der passenden ID in der Datenbank gesucht:
const data = await readData();
const post = data.find((post) => post.id === postId);
- Die asynchrone Funktion
readDatawird verwendet, um Daten aus der JSON-Datei abzurufen; - Die Methode
find()wird eingesetzt, um einen Post mit passender ID in den abgerufenen Daten zu finden; - Die Variable
postenthält den gefundenen Post oderundefined, falls keine Übereinstimmung vorliegt.
Behandlung der Antwort
Die Antwort wird abhängig davon behandelt, ob ein Beitrag gefunden wurde oder nicht:
if (!post) {
res.status(404).json({ error: "Post not found" });
} else {
res.status(200).send(post);
}
- Wenn kein Beitrag gefunden wurde (d. h.
postistundefined), wird eine 404-Antwort zusammen mit einer Fehlermeldung gesendet, die darauf hinweist, dass der angeforderte Beitrag nicht gefunden wurde; - Wenn ein Beitrag gefunden wurde, wird dieser mit dem Statuscode 200 (OK) als Antwort gesendet.
Fehlerbehandlung
Der Routencode wird in einen try-catch-Block eingebettet, um potenzielle Fehler bei der Datenabfrage oder der Verarbeitung der Anfrage zu behandeln. Alle auftretenden Fehler werden zur Fehlersuche in der Konsole protokolliert:
try {
// ... (code for retrieving and processing data)
} catch (error) {
console.error(error.message);
}
Vollständiger Code der Datei postsRoutes.js in diesem Schritt
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
}
});
// GET POST BY ID
router.get("/post/:id", async (req, res, next) => {
try {
// Extract the post ID from the request parameters
const postId = req.params.id;
// Read data from the JSON file
const data = await readData();
// Find the post with the matching ID
const post = data.find((post) => post.id === postId);
// If the post is not found, send a 404 response
if (!post) {
res.status(404).json({ error: "Post not found" });
} else {
// If the post is found, send it as the response
res.status(200).send(post);
}
} catch (error) {
// Handle errors by logging them and sending an error response
console.error(error.message);
}
});
Danke für Ihr Feedback!