Building a RESTful API with Express.js: A Step-by-Step Guide

RESTful APIs have become an integral part of modern web development, enabling seamless communication between different applications. Express.js, a popular web framework for Node.js, simplifies the process of creating robust and scalable APIs. In this step-by-step guide, we'll walk through the process of building a RESTful API using Express.js.

Prerequisites

Before we begin, make sure you have Node.js and npm (Node Package Manager) installed on your machine. You can download them from nodejs.org.

Step 1: Initialize Your Project

Create a new directory for your project and navigate into it using the terminal. Run the following commands to initialize a new Node.js project and create a package.json file:

npm init -y

Step 2: Install Dependencies

Install Express.js by running the following command in your terminal:

npm install express

Step 3: Create the Express App

Create a new file, let's call it app.js, and set up your Express application:

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

app.use(express.json());

// Define your routes here

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

This code initializes an Express app, sets up JSON parsing middleware, and listens on port 3000.

Step 4: Define Your Routes

Express allows you to define routes for handling various HTTP methods (GET, POST, PUT, DELETE). Let's create a simple example:

// app.js (continued)
const todos = [];

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

// Get a specific todo by ID
app.get('/todos/:id', (req, res) => {
  const todoId = req.params.id;
  const todo = todos.find((t) => t.id === parseInt(todoId));

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

  res.json(todo);
});

// Create a new todo
app.post('/todos', (req, res) => {
  const newTodo = req.body;
  todos.push(newTodo);
  res.status(201).json(newTodo);
});

// Update a todo by ID
app.put('/todos/:id', (req, res) => {
  const todoId = req.params.id;
  const updatedTodo = req.body;

  // Update the todo logic here

  res.json(updatedTodo);
});

// Delete a todo by ID
app.delete('/todos/:id', (req, res) => {
  const todoId = req.params.id;

  // Delete the todo logic here

  res.json({ message: 'Todo deleted successfully' });
});

Step 5: Run Your Express App

Now that your Express app is set up with routes, run the following command in your terminal:

node app.js

Visit http://localhost:3000/todos in your browser or a tool like Postman to test your API.

Congratulations! You've successfully built a basic RESTful API using Express.js. From here, you can expand and enhance your API by adding middleware, validation, database integration, and more. Express.js provides a flexible and powerful framework for building scalable and maintainable APIs.