DEV Community

Tanmay Gupta
Tanmay Gupta

Posted on

Handling GET, POST, PUT, DELETE Requests in Express

When building APIs with Express.js, you’ll work a lot with four main types of HTTP requests:

  • GET – Fetch data
  • POST – Create new data
  • PUT – Update existing data
  • DELETE – Remove data

In this post, you’ll learn how to handle each of these request types using Express.


Project Setup (Quick Recap)

Before writing routes, make sure your Express project is set up:

mkdir express-crud-demo
cd express-crud-demo
npm init -y
npm install express
Enter fullscreen mode Exit fullscreen mode

Create an index.js file:

// index.js
const express = require('express');
const app = express();

// Middleware to parse JSON
app.use(express.json());

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}`);
});
Enter fullscreen mode Exit fullscreen mode

Sample Data (In-Memory Array)

Let’s create a fake list of users for demonstration:

let users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' }
];
Enter fullscreen mode Exit fullscreen mode

1. GET Request – Fetch All Users

app.get('/users', (req, res) => {
  res.json(users);
});
Enter fullscreen mode Exit fullscreen mode

Try it:

GET http://localhost:3000/users
Enter fullscreen mode Exit fullscreen mode

2. POST Request – Add a New User

app.post('/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name
  };
  users.push(newUser);
  res.status(201).json(newUser);
});
Enter fullscreen mode Exit fullscreen mode

Sample Request Body:

{
  "name": "Charlie"
}
Enter fullscreen mode Exit fullscreen mode

3. PUT Request – Update a User

app.put('/users/:id', (req, res) => {
  const userId = parseInt(req.params.id);
  const user = users.find(u => u.id === userId);

  if (!user) {
    return res.status(404).json({ message: 'User not found' });
  }

  user.name = req.body.name;
  res.json(user);
});
Enter fullscreen mode Exit fullscreen mode

Sample Request:

PUT http://localhost:3000/users/1
Enter fullscreen mode Exit fullscreen mode

Body:

{
  "name": "Updated Alice"
}
Enter fullscreen mode Exit fullscreen mode

4. DELETE Request – Remove a User

app.delete('/users/:id', (req, res) => {
  const userId = parseInt(req.params.id);
  const index = users.findIndex(u => u.id === userId);

  if (index === -1) {
    return res.status(404).json({ message: 'User not found' });
  }

  users.splice(index, 1);
  res.json({ message: 'User deleted successfully' });
});
Enter fullscreen mode Exit fullscreen mode

Complete Example

Here’s the full version of index.js with all routes:

const express = require('express');
const app = express();
app.use(express.json());

let users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' }
];

app.get('/users', (req, res) => {
  res.json(users);
});

app.post('/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name
  };
  users.push(newUser);
  res.status(201).json(newUser);
});

app.put('/users/:id', (req, res) => {
  const userId = parseInt(req.params.id);
  const user = users.find(u => u.id === userId);
  if (!user) return res.status(404).json({ message: 'User not found' });
  user.name = req.body.name;
  res.json(user);
});

app.delete('/users/:id', (req, res) => {
  const userId = parseInt(req.params.id);
  const index = users.findIndex(u => u.id === userId);
  if (index === -1) return res.status(404).json({ message: 'User not found' });
  users.splice(index, 1);
  res.json({ message: 'User deleted successfully' });
});

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}`);
});
Enter fullscreen mode Exit fullscreen mode

Summary

HTTP Method Purpose Route Example
GET Read data /users
POST Create data /users
PUT Update data /users/:id
DELETE Delete data /users/:id

With this basic CRUD setup, you're ready to build REST APIs using Express.

Top comments (0)