Bird
Raised Fist0
Expressframework~5 mins

HTTP methods for CRUD operations in Express

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
Introduction

HTTP methods help your server know what action to do with data. They match common tasks like creating, reading, updating, or deleting information.

When you want to add new data to a database.
When you need to get or show data to users.
When you want to change existing data.
When you want to remove data from storage.
When building a REST API to handle data operations.
Syntax
Express
app.METHOD(PATH, HANDLER)

// METHOD can be GET, POST, PUT, DELETE, PATCH
// PATH is the URL path
// HANDLER is a function to run when the route is called

Use GET to read data without changing it.

Use POST to create new data.

Examples
This handles reading all items.
Express
app.get('/items', (req, res) => {
  res.send('Get all items')
})
This handles adding a new item.
Express
app.post('/items', (req, res) => {
  res.send('Create a new item')
})
This updates an existing item fully.
Express
app.put('/items/:id', (req, res) => {
  res.send(`Update item with id ${req.params.id}`)
})
This deletes an item by id.
Express
app.delete('/items/:id', (req, res) => {
  res.send(`Delete item with id ${req.params.id}`)
})
Sample Program

This Express app shows how to use HTTP methods for CRUD on notes. Each route matches a CRUD action.

Express
import express from 'express'
const app = express()
app.use(express.json())

// Create (POST)
app.post('/notes', (req, res) => {
  res.send('Note created')
})

// Read (GET)
app.get('/notes', (req, res) => {
  res.send('List of notes')
})

// Update (PUT)
app.put('/notes/:id', (req, res) => {
  res.send(`Note ${req.params.id} updated`)
})

// Delete (DELETE)
app.delete('/notes/:id', (req, res) => {
  res.send(`Note ${req.params.id} deleted`)
})

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})
OutputSuccess
Important Notes

Use PATCH if you want to update only part of data, not the whole.

Always test your routes with tools like Postman or browser to see if they work.

Summary

GET reads data.

POST creates data.

PUT updates data fully.

DELETE removes data.

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