Bird
Raised Fist0
Expressframework~30 mins

HTTP methods for CRUD operations in Express - Mini Project: Build & Apply

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
HTTP methods for CRUD operations
📖 Scenario: You are building a simple Express server to manage a list of books. Each book has an id and a title. You want to allow users to create, read, update, and delete books using HTTP methods.
🎯 Goal: Create an Express app that supports CRUD operations on a books array using the correct HTTP methods: GET, POST, PUT, and DELETE.
📋 What You'll Learn
Create an array called books with two book objects having id and title.
Add a variable called nextId to track the next book ID.
Create a GET route at /books to return all books.
Create a POST route at /books to add a new book with a unique id.
Create a PUT route at /books/:id to update the title of a book by id.
Create a DELETE route at /books/:id to remove a book by id.
💡 Why This Matters
🌍 Real World
Web servers often use HTTP methods to manage data resources like users, products, or posts. This project shows how to build a simple API for managing books.
💼 Career
Understanding HTTP methods and Express routing is essential for backend web development jobs, API design, and full-stack roles.
Progress0 / 4 steps
1
Create the initial books array
Create an array called books with two objects: { id: 1, title: '1984' } and { id: 2, title: 'Brave New World' }.
Express
Hint

Use const books = [ ... ] with two objects inside.

2
Add a nextId variable
Add a variable called nextId and set it to 3 to track the next book ID.
Express
Hint

Use let nextId = 3; to allow incrementing later.

3
Create GET and POST routes
Create a GET route at /books that sends the books array as JSON. Then create a POST route at /books that adds a new book with a unique id from nextId and increments nextId. Use req.body.title for the new book's title.
Express
Hint

Use app.get('/books', (req, res) => { res.json(books); }) and app.post('/books', (req, res) => { ... }).

4
Create PUT and DELETE routes
Create a PUT route at /books/:id that updates the title of the book with the matching id from req.params.id. Then create a DELETE route at /books/:id that removes the book with the matching id. Use res.status(204).end() after deletion.
Express
Hint

Use app.put('/books/:id', ...) to find and update the book, and app.delete('/books/:id', ...) to remove it.

Practice

(1/5)
1. Which HTTP method is typically used in Express to retrieve data from a server?
easy
A. PUT
B. POST
C. DELETE
D. GET

Solution

  1. Step 1: Understand HTTP methods purpose

    GET is used to read or retrieve data from the server without changing it.
  2. Step 2: Match method to action

    Since the question asks for retrieving data, GET is the correct method.
  3. Final Answer:

    GET -> Option D
  4. Quick Check:

    Retrieve data = GET [OK]
Hint: GET always reads data without changing it [OK]
Common Mistakes:
  • Confusing POST with GET for reading data
  • Using DELETE to get data
  • Thinking PUT retrieves data
2. Which of the following is the correct Express syntax to handle a POST request to the path /users?
easy
A. app.get('/users', (req, res) => { ... })
B. app.put('/users', (req, res) => { ... })
C. app.post('/users', (req, res) => { ... })
D. app.delete('/users', (req, res) => { ... })

Solution

  1. Step 1: Identify method for creating data

    POST is used to create new data on the server.
  2. Step 2: Match Express syntax to POST

    app.post('/users', ...) correctly handles POST requests to /users.
  3. Final Answer:

    app.post('/users', (req, res) => { ... }) -> Option C
  4. Quick Check:

    POST creates data = app.post() [OK]
Hint: Use app.post() for creating new data routes [OK]
Common Mistakes:
  • Using app.get() for POST requests
  • Confusing app.put() with app.post()
  • Writing app.delete() for creation
3. What will be the response status code if you define this Express route and send a request to PUT /items/5?
app.put('/items/:id', (req, res) => {
  res.status(200).send(`Updated item ${req.params.id}`);
});
medium
A. 200 OK
B. 201 Created
C. 500 Internal Server Error
D. 404 Not Found

Solution

  1. Step 1: Analyze route and method

    The route handles PUT requests to /items/:id, so /items/5 matches with id=5.
  2. Step 2: Check response status code

    The code explicitly sets status 200 and sends a message, so response status is 200 OK.
  3. Final Answer:

    200 OK -> Option A
  4. Quick Check:

    PUT route sends status 200 = 200 OK [OK]
Hint: Check res.status() for response code [OK]
Common Mistakes:
  • Assuming 201 Created for PUT
  • Thinking 404 if route exists
  • Confusing 500 error without code
4. Identify the error in this Express route meant to delete a user by ID:
app.delete('/users/:id', (req, res) => {
  const userId = req.params;
  deleteUser(userId);
  res.send('User deleted');
});
medium
A. req.params should be req.params.id to get the ID
B. deleteUser is not a valid Express method
C. res.send should be res.status(204).send()
D. Route path should be '/user/:id' not '/users/:id'

Solution

  1. Step 1: Check how userId is assigned

    req.params is an object; to get the ID string, use req.params.id.
  2. Step 2: Understand deleteUser usage

    deleteUser likely expects an ID string, so passing the whole params object is wrong.
  3. Final Answer:

    req.params should be req.params.id to get the ID -> Option A
  4. Quick Check:

    Use req.params.id for ID value [OK]
Hint: Use req.params.id to access route parameters [OK]
Common Mistakes:
  • Passing whole req.params object instead of ID
  • Confusing route path naming
  • Assuming deleteUser is Express built-in
5. You want to update a user's email fully using Express. Which HTTP method and route setup is best practice for this operation?
hard
A. app.post('/users/:id', (req, res) => { ... })
B. app.put('/users/:id', (req, res) => { ... })
C. app.get('/users/:id', (req, res) => { ... })
D. app.delete('/users/:id', (req, res) => { ... })

Solution

  1. Step 1: Identify method for full update

    PUT is the HTTP method used to fully update existing data.
  2. Step 2: Match route to user ID

    Route '/users/:id' targets a specific user by ID for update.
  3. Final Answer:

    app.put('/users/:id', (req, res) => { ... }) -> Option B
  4. Quick Check:

    Full update = PUT method [OK]
Hint: Use PUT with ID route for full updates [OK]
Common Mistakes:
  • Using POST for updates instead of creation
  • Using GET or DELETE for updating data
  • Not including :id in route for specific user