Implement Route Handlers for GET, PUT, and DELETE
Implement more route handlers in our application.
We'll cover the following...
We'll cover the following...
Let’s allow the API consumer to retrieve, update, or delete a recipe by ID. Don’t forget to test the endpoint with Postman!
Implementing route handlers
Let’s make sure that our files contain the following code.
- First, implement the necessary functions in the service layer to perform CRUD operations on the database. Add the following code in the
express-recipes/src/services/recipes.jsfile:
const fs = require("fs").promises;const path = require("path");const recipesFilePath = path.join(__dirname, "../../db/recipes.json");const getAll = async () => JSON.parse(await fs.readFile(recipesFilePath));const get = async (id) => {const recipes = await getAll();return recipes.find((recipe) => recipe.id === parseInt(id));};const save = async (recipe) => {const recipes = await getAll();recipe.id = recipes.length + 1; // Not a robust incrementor mechanism; don't use in production!recipes.push(recipe);await fs.writeFile(recipesFilePath, JSON.stringify(recipes));return recipe;};const update = async (id, updated) => {const recipes = await getAll();updated.id = parseInt(id);const updatedRecipes = recipes.map((recipe) => {return recipe.id === parseInt(id) ? updated : recipe;});await fs.writeFile(recipesFilePath, JSON.stringify(updatedRecipes));return updated;};const remove = async (id) => {const recipes = await getAll();const newRecipes = recipes.map((recipe) => {return recipe.id === parseInt(id) ? null : recipe;}).filter((recipe) => recipe !== null);await fs.writeFile(recipesFilePath, JSON.stringify(newRecipes));};module.exports = {getAll,get,save,update,remove,};
- Next,