Back

Comment créer une API REST minimale avec Node.js

Comment créer une API REST minimale avec Node.js

Vous avez besoin d’un backend rapide pour votre projet frontend. Peut-être s’agit-il d’un prototype, d’un environnement de développement local ou d’un service de production simple. La mise en place d’une API REST Node.js ne devrait pas nécessiter une semaine de configuration.

Ce guide vous accompagne dans la création d’une API REST minimale en utilisant Node.js moderne et Express 5. Vous obtiendrez l’analyse JSON, une gestion appropriée des erreurs et une structure claire—le tout en ~80 lignes de code.

Points clés à retenir

  • Créer une API REST fonctionnelle avec Express 5 en ~80 lignes de code
  • Utiliser un middleware intégré pour l’analyse JSON sans dépendances externes
  • Implémenter des modèles de réponse cohérents avec des codes de statut HTTP appropriés
  • Ajouter une gestion centralisée des erreurs pour réduire les défaillances inattendues du serveur

Prérequis

Avant de commencer, assurez-vous d’avoir :

  • Node.js 24 LTS ou plus récent installé (peut être téléchargé depuis le site officiel Node.js)
  • Un éditeur de code
  • Des connaissances de base en JavaScript

Configuration du projet

Créez un nouveau répertoire et initialisez votre projet :

mkdir minimal-api
cd minimal-api
npm init -y

Installez Express 5 :

npm install express

Ouvrez package.json et ajoutez "type": "module" pour activer les imports ESM. Votre fichier devrait inclure :

{
  "type": "module",
  "scripts": {
    "start": "node server.js"
  }
}

Création de votre API Express 5

Créez server.js avec le code suivant :

import express from 'express'

const app = express()
const PORT = process.env.PORT || 3000

// Built-in JSON parsing middleware
app.use(express.json())

// In-memory data store
let items = [
  { id: 1, name: 'First item' },
  { id: 2, name: 'Second item' }
]

let nextId = 3

// GET all items
app.get('/api/items', (req, res) => {
  res.json({ data: items })
})

// GET single item
app.get('/api/items/:id', (req, res) => {
  const item = items.find(i => i.id === parseInt(req.params.id))
  if (!item) {
    return res.status(404).json({ error: 'Item not found' })
  }
  res.json({ data: item })
})

// POST new item
app.post('/api/items', (req, res) => {
  const { name } = req.body
  if (!name) {
    return res.status(400).json({ error: 'Name is required' })
  }
  const newItem = { id: nextId++, name }
  items.push(newItem)
  res.status(201).json({ data: newItem })
})

// DELETE item
app.delete('/api/items/:id', (req, res) => {
  const index = items.findIndex(i => i.id === parseInt(req.params.id))
  if (index === -1) {
    return res.status(404).json({ error: 'Item not found' })
  }
  items.splice(index, 1)
  res.status(204).send()
})

// 404 handler for undefined routes
app.use((req, res) => {
  res.status(404).json({ error: 'Route not found' })
})

// Error handling middleware
app.use((err, req, res, next) => {
  console.error(err.stack)
  res.status(500).json({ error: 'Internal server error' })
})

app.listen(PORT, () => {
  console.log(`Server running on http://localhost:${PORT}`)
})

Démarrez votre serveur :

npm start

Comprendre la structure de l’API backend JavaScript

Cette configuration d’API REST Node minimale couvre les éléments essentiels :

Analyse JSON : Express 5 inclut express.json() comme middleware intégré. Aucun package externe n’est nécessaire (voir la documentation de l’API Express).

Réponses cohérentes : Chaque endpoint renvoie du JSON avec soit une propriété data soit une propriété error. Cette prévisibilité aide le code frontend à gérer les réponses de manière uniforme.

Codes de statut HTTP : L’API utilise des codes appropriés—200 pour le succès, 201 pour les ressources créées, 204 pour les suppressions réussies, 400 pour les requêtes incorrectes, 404 pour les ressources manquantes et 500 pour les erreurs serveur.

Gestion des erreurs : Le middleware de gestion des erreurs générique empêche les erreurs de route non gérées de faire planter votre serveur.

Tester vos endpoints

Utilisez curl ou n’importe quel client HTTP :

# Get all items
curl http://localhost:3000/api/items

# Get single item
curl http://localhost:3000/api/items/1

# Create item
curl -X POST http://localhost:3000/api/items \
  -H "Content-Type: application/json" \
  -d '{"name": "New item"}'

# Delete item
curl -X DELETE http://localhost:3000/api/items/1

Ce que ce guide n’inclut pas

Ce guide omet intentionnellement les bases de données, l’authentification et la validation complexe. Ces préoccupations sont importantes pour les systèmes de production, mais ajoutent du bruit lorsque vous apprenez les fondamentaux ou que vous créez un prototype rapide.

Lorsque vous serez prêt à étendre votre API, envisagez d’ajouter :

  • La validation des entrées avec une bibliothèque comme Zod
  • Des variables d’environnement pour la configuration
  • Une connexion à une base de données pour la persistance

Conclusion

Vous disposez maintenant d’une API REST minimale fonctionnelle avec Node.js et Express 5. Le modèle présenté ici—réponses JSON cohérentes, codes de statut appropriés et gestion centralisée des erreurs—évolue bien à mesure que votre API se développe. Commencez avec cette base, puis ajoutez de la complexité uniquement lorsque votre projet l’exige.

FAQ

Express 5 inclut un support natif des promesses pour les gestionnaires de routes, ce qui signifie que les promesses rejetées qui sont retournées ou levées déclenchent automatiquement le middleware de gestion des erreurs. Il supprime également les méthodes dépréciées et améliore la correspondance des chemins. L'API principale reste similaire, donc la migration depuis Express 4 est simple pour la plupart des projets.

Un stockage en mémoire permet de garder l'exemple concentré sur la structure de l'API plutôt que sur la configuration d'une base de données. Cela fonctionne bien pour les prototypes et l'apprentissage. Pour la production, remplacez le tableau par une base de données comme PostgreSQL ou MongoDB pour persister les données entre les redémarrages du serveur.

Installez le package cors avec npm install cors, puis importez-le et ajoutez app.use(cors()) avant vos routes. Vous pouvez passer des options pour restreindre les origines qui peuvent accéder à votre API. Ceci est nécessaire lorsque votre frontend s'exécute sur un domaine ou un port différent de celui de votre backend.

Cette structure fournit une base solide mais nécessite des ajouts pour une utilisation en production. Ajoutez la validation des entrées, l'authentification, la limitation du débit, la journalisation et une base de données appropriée. Le format de réponse cohérent et les modèles de gestion des erreurs présentés ici évoluent bien à mesure que vous ajoutez ces fonctionnalités.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay