DEV Community

Cover image for RESTful APIs
Suhas Palani
Suhas Palani

Posted on

RESTful APIs

  • Topic: "Building RESTful APIs with Node.js and Express"
  • Description: How to design and build RESTful APIs using Node.js and Express.

Content:

1. Introduction to RESTful APIs

  • What is REST: Explain REST (Representational State Transfer) and its principles.
  • HTTP Methods: Discuss common HTTP methods: GET, POST, PUT, DELETE, PATCH.

2. Setting Up the Project

  • Project Initialization:

    mkdir myapi cd myapi npm init -y npm install express body-parser 
  • Project Structure:

    myapi/ ├── node_modules/ ├── package.json ├── index.js 

3. Creating a Simple API

  • Basic Express Setup:

    const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const port = 3000; app.use(bodyParser.json()); app.listen(port, () => { console.log(`API running at http://localhost:${port}`); }); 

4. Defining Routes

  • Sample Routes:

    let books = []; app.get('/books', (req, res) => { res.json(books); }); app.post('/books', (req, res) => { const book = req.body; books.push(book); res.status(201).json(book); }); app.get('/books/:id', (req, res) => { const book = books.find(b => b.id === parseInt(req.params.id)); if (book) { res.json(book); } else { res.status(404).send('Book not found'); } }); app.put('/books/:id', (req, res) => { const index = books.findIndex(b => b.id === parseInt(req.params.id)); if (index !== -1) { books[index] = req.body; res.json(books[index]); } else { res.status(404).send('Book not found'); } }); app.delete('/books/:id', (req, res) => { books = books.filter(b => b.id !== parseInt(req.params.id)); res.status(204).send(); }); 

5. Testing the API

  • Using Postman or Curl: Demonstrate how to use Postman or Curl to test API endpoints.
  • Example Tests:
    • GET /books
    • POST /books with JSON body {"id": 1, "title": "1984", "author": "George Orwell"}
    • GET /books/1
    • PUT /books/1 with JSON body {"id": 1, "title": "Animal Farm", "author": "George Orwell"}
    • DELETE /books/1

Top comments (0)