DEV Community

Cover image for Qu'est-ce que DummyJSON ? Une API REST fictive gratuite et comment construire la vôtre
Antoine Laurent
Antoine Laurent

Posted on • Originally published at apidog.com

Qu'est-ce que DummyJSON ? Une API REST fictive gratuite et comment construire la vôtre

Si vous construisez une interface utilisateur avant que le backend n’existe, DummyJSON vous permet d’afficher rapidement des données réalistes sans créer d’API. Cette fausse API REST gratuite expose des produits, utilisateurs, paniers et autres ressources via HTTPS, sans inscription. Voici comment l’utiliser efficacement, quand la préférer à d’autres API de test publiques, et quand passer à une maquette personnalisée.

Essayez Apidog aujourd'hui

Qu’est-ce que DummyJSON ?

DummyJSON est une API JSON de remplacement. Vous appelez un point de terminaison public, et elle renvoie des données d’exemple structurées : produits, utilisateurs, paniers, articles, commentaires, tâches, recettes, etc.

Aucune base de données à configurer. Aucune clé API. Vous pouvez l’appeler depuis un navigateur, curl, une application mobile ou un script backend.

DummyJSON API

Les données sont fausses, mais cohérentes :

  • un produit contient un titre, un prix, une note, un stock et une catégorie ;
  • un utilisateur contient un nom, un e-mail, une adresse et une entreprise ;
  • un panier contient des produits associés à un utilisateur.

Cette structure suffit pour développer rapidement :

  • des listes ;
  • des cartes produit ;
  • une pagination ;
  • des filtres ;
  • des pages de détail ;
  • des états de chargement ;
  • des appels réseau réels sans backend.

DummyJSON est donc utile pour les prototypes, les tutoriels et les premières intégrations frontend.

Utiliser les principaux points de terminaison DummyJSON

DummyJSON expose plusieurs collections REST :

  • /products : catalogue avec prix, stock et notes ;
  • /users : utilisateurs avec adresses, e-mails et entreprises ;
  • /carts : paniers liés aux utilisateurs ;
  • /posts et /comments : contenu de type blog ;
  • /todos : tâches ;
  • /recipes et /quotes : contenus additionnels.

Lire une liste paginée

curl "https://dummyjson.com/products?limit=5&skip=10"
Enter fullscreen mode Exit fullscreen mode

Exemple d’usage côté JavaScript :

const response = await fetch("https://dummyjson.com/products?limit=5&skip=10");
const data = await response.json();

console.log(data.products);
Enter fullscreen mode Exit fullscreen mode

Vous pouvez utiliser limit et skip pour tester une pagination :

GET /products?limit=10&skip=0
GET /products?limit=10&skip=10
GET /products?limit=10&skip=20
Enter fullscreen mode Exit fullscreen mode

Récupérer un élément par ID

curl https://dummyjson.com/products/1
Enter fullscreen mode Exit fullscreen mode

En JavaScript :

const productId = 1;

const response = await fetch(`https://dummyjson.com/products/${productId}`);
const product = await response.json();

console.log(product.title, product.price);
Enter fullscreen mode Exit fullscreen mode

Rechercher des données

curl "https://dummyjson.com/products/search?q=phone"
Enter fullscreen mode Exit fullscreen mode

Exemple pour brancher une barre de recherche :

async function searchProducts(query) {
  const response = await fetch(
    `https://dummyjson.com/products/search?q=${encodeURIComponent(query)}`
  );

  return response.json();
}

const results = await searchProducts("phone");
console.log(results.products);
Enter fullscreen mode Exit fullscreen mode

Limiter les champs retournés

Le paramètre select permet de ne récupérer que certains champs :

curl "https://dummyjson.com/products?select=title,price,category"
Enter fullscreen mode Exit fullscreen mode

C’est pratique pour tester une interface qui n’a besoin que d’un sous-ensemble de données.

Simuler un réseau lent

Le paramètre delay ajoute une latence artificielle entre 0 et 5000 ms :

curl "https://dummyjson.com/products?delay=2000"
Enter fullscreen mode Exit fullscreen mode

Vous pouvez l’utiliser pour tester un état de chargement :

let loading = true;

try {
  const response = await fetch("https://dummyjson.com/products?delay=2000");
  const data = await response.json();

  console.log(data.products);
} finally {
  loading = false;
}
Enter fullscreen mode Exit fullscreen mode

Authentification avec DummyJSON

DummyJSON fournit aussi un flux d’authentification simulé.

1. Se connecter

curl -X POST https://dummyjson.com/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"emilys","password":"emilyspass"}'
Enter fullscreen mode Exit fullscreen mode

La réponse contient un jeton d’accès.

2. Appeler un endpoint protégé

curl https://dummyjson.com/auth/me \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"
Enter fullscreen mode Exit fullscreen mode

Exemple JavaScript :

const loginResponse = await fetch("https://dummyjson.com/auth/login", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    username: "emilys",
    password: "emilyspass",
  }),
});

const auth = await loginResponse.json();

const meResponse = await fetch("https://dummyjson.com/auth/me", {
  headers: {
    Authorization: `Bearer ${auth.accessToken}`,
  },
});

const user = await meResponse.json();

console.log(user);
Enter fullscreen mode Exit fullscreen mode

Ce flux est utile pour prototyper :

  • un écran de connexion ;
  • le stockage temporaire d’un token ;
  • la redirection après login ;
  • l’affichage d’un profil utilisateur.

Écritures simulées : POST, PUT, PATCH, DELETE

DummyJSON accepte les écritures :

  • POST pour créer ;
  • PUT pour remplacer ;
  • PATCH pour modifier partiellement ;
  • DELETE pour supprimer.

Exemple de création :

curl -X POST https://dummyjson.com/products/add \
  -H "Content-Type: application/json" \
  -d '{"title":"Produit de test","price":99}'
Enter fullscreen mode Exit fullscreen mode

Exemple de mise à jour :

curl -X PATCH https://dummyjson.com/products/1 \
  -H "Content-Type: application/json" \
  -d '{"price":129}'
Enter fullscreen mode Exit fullscreen mode

Mais il faut retenir une limite importante : les écritures ne persistent pas.

DummyJSON renvoie une réponse qui ressemble à une création ou une mise à jour réussie, mais les données ne sont pas réellement enregistrées. Si vous relisez la ressource plus tard, vous retrouverez les données d’origine.

C’est normal pour une API publique partagée. Utilisez donc ces écritures pour tester l’interface, pas pour valider un vrai comportement métier.

La documentation ne publie pas de limites de débit strictes, mais traitez DummyJSON comme tout service gratuit partagé : ne l’utilisez pas pour des tests de charge.

Pour explorer d’autres options, consultez aussi ce récapitulatif des API gratuites pour les développeurs.

DummyJSON vs JSONPlaceholder vs Reqres

DummyJSON n’est pas la seule fausse API REST gratuite. Les alternatives courantes sont JSONPlaceholder et Reqres.

Outil Idéal pour Ressources Flux d’authentification Les écritures persistent-elles ?
DummyJSON Démos réalistes de type e-commerce Produits, utilisateurs, paniers, articles, recettes, etc. Connexion + bearer token Non, simulé
JSONPlaceholder Tutoriels CRUD rapides Articles, commentaires, utilisateurs, tâches, albums, photos Aucun Non, simulé
Reqres Démos de login et requêtes/réponses simples Utilisateurs, mocks d’inscription/connexion Mock d’inscription/connexion Non, simulé

Choisissez selon votre besoin :

  • utilisez DummyJSON pour une interface e-commerce ou des données plus riches ;
  • utilisez JSONPlaceholder pour un CRUD générique très simple ;
  • utilisez Reqres pour démontrer rapidement un flux de connexion.

Le modèle reste similaire : les données sont fixes, les écritures sont simulées, et vous ne contrôlez pas le schéma retourné.

JSONPlaceholder fonctionne avec json-server en coulisses, ce qui explique son modèle de données générique. DummyJSON est plus adapté si vous voulez des produits, paniers et utilisateurs qui ressemblent davantage à un vrai magasin.

Liens utiles :

Quand DummyJSON ne suffit plus

DummyJSON est excellent pour démarrer, mais ses limites apparaissent dès que votre application devient spécifique.

Vous aurez besoin d’autre chose si :

  • votre frontend attend des champs absents du schéma DummyJSON, comme subscription_tier, feature_flags ou billingStatus ;
  • vous devez tester des écritures qui persistent ;
  • vous voulez simuler des erreurs contrôlées comme 400, 401, 429 ou 500 ;
  • vous devez aligner le frontend sur votre propre contrat OpenAPI ;
  • vous voulez générer des réponses différentes selon les scénarios ;
  • vous avez besoin d’un mock proche de votre future API de production.

Dans ce cas, il vaut mieux créer votre propre API mockée au lieu d’utiliser une fausse API fixe.

Construire une fausse API REST personnalisée avec Apidog

Apidog permet de concevoir, tester, documenter et simuler des API dans un même espace. Son serveur de maquette remplace une API fixe comme DummyJSON lorsque vous devez contrôler le schéma, les données et les réponses.

L’objectif est simple : définir votre contrat API, puis obtenir une URL de mock que votre frontend peut appeler immédiatement.

1. Définir le point de terminaison

Créez par exemple :

GET /products
Enter fullscreen mode Exit fullscreen mode

Puis décrivez la réponse attendue :

{
  "products": [
    {
      "id": 1,
      "title": "string",
      "price": 99,
      "stock": 20,
      "category": "string"
    }
  ],
  "total": 100,
  "skip": 0,
  "limit": 10
}
Enter fullscreen mode Exit fullscreen mode

Vous pouvez aussi importer un fichier OpenAPI/Swagger existant afin que la maquette corresponde à votre contrat réel.

2. Générer automatiquement les données de mock

Apidog peut générer des valeurs à partir des noms et types de champs :

  • email retourne une adresse e-mail ;
  • price retourne un nombre ;
  • createdAt retourne une date ;
  • status peut retourner une valeur d’énumération ;
  • id retourne un identifiant.

Cela évite d’écrire manuellement de grands jeux de données.

Le guide sur la génération de données de maquette à partir de schémas OpenAPI détaille cette approche pilotée par le schéma.

3. Personnaliser les cas limites

Avec votre propre mock, vous pouvez définir des scénarios impossibles à contrôler dans DummyJSON :

  • une réponse 500 pour tester un écran d’erreur ;
  • une réponse 401 pour tester une session expirée ;
  • une liste vide pour tester un état “aucun résultat” ;
  • un prix dans une plage spécifique ;
  • un statut limité à active, pending ou cancelled.

Exemple de réponse d’erreur à prévoir dans votre frontend :

{
  "error": "Internal Server Error",
  "message": "Une erreur temporaire est survenue"
}
Enter fullscreen mode Exit fullscreen mode

Côté frontend :

async function fetchProducts() {
  const response = await fetch("https://<your-mock-host>/products");

  if (!response.ok) {
    throw new Error(`Erreur API: ${response.status}`);
  }

  return response.json();
}
Enter fullscreen mode Exit fullscreen mode

4. Appeler le serveur de maquette

Une fois le mock publié, vous obtenez une URL que votre frontend peut consommer comme une vraie API :

curl "https://<your-mock-host>/products?limit=5"
Enter fullscreen mode Exit fullscreen mode

Votre code frontend peut alors remplacer DummyJSON par votre mock :

const API_BASE_URL = "https://<your-mock-host>";

const response = await fetch(`${API_BASE_URL}/products?limit=5`);
const data = await response.json();

console.log(data.products);
Enter fullscreen mode Exit fullscreen mode

L’avantage : lorsque votre spécification API évolue, votre maquette peut évoluer avec elle. Le frontend reste aligné avec le contrat prévu.

Pour des jeux de données plus réalistes, l’approche de création de données de test API réalistes complète bien un workflow basé sur les maquettes.

Apidog mock API

Le compromis est clair :

  • DummyJSON est plus rapide pour une démo jetable ;
  • Apidog est plus adapté dès que vous avez besoin de votre propre schéma, de scénarios contrôlés et d’une maquette alignée avec votre future API.

Foire aux questions

DummyJSON est-il gratuit ?

Oui. DummyJSON est gratuit et ne nécessite pas de clé API. Vous pouvez appeler ses points de terminaison publics depuis un navigateur, curl ou votre application.

Il est destiné au prototypage, aux tutoriels et à l’apprentissage. Ne l’utilisez pas pour du trafic de production ou des tests de charge.

DummyJSON enregistre-t-il les données créées ou modifiées ?

Non. Les requêtes POST, PUT, PATCH et DELETE renvoient une réponse de succès simulée, mais rien ne persiste côté serveur.

Si vous devez relire les données créées ou tester un flux plus réaliste, créez votre propre mock. Le guide des API de maquette explique la différence entre simulation simple et maquette avec état.

Quelle est la différence entre DummyJSON et un serveur de maquette ?

DummyJSON fournit un jeu de données fixe partagé par tout le monde.

Un serveur de maquette, comme celui d’Apidog, s’appuie sur votre schéma et renvoie les données, statuts HTTP et scénarios que vous définissez.

Utilisez DummyJSON pour des démonstrations génériques. Utilisez un serveur de maquette lorsque les données doivent correspondre à votre propre API.

Puis-je obtenir des données réalistes au lieu de simples placeholders ?

Oui. Les outils basés sur les schémas peuvent générer des valeurs crédibles à partir des noms et types de champs.

Par exemple :

  • email devient une adresse e-mail ;
  • price devient un prix ;
  • createdAt devient une date ;
  • category devient une catégorie ;
  • status devient une valeur métier.

C’est l’une des raisons principales de passer d’une fausse API fixe à une maquette personnalisée.

Conclusion

DummyJSON est une excellente fausse API REST gratuite pour démarrer vite. Elle permet de brancher une interface sur des données réalistes sans backend, notamment pour des produits, utilisateurs, paniers, articles ou tâches.

Ses limites apparaissent lorsque vous avez besoin de champs personnalisés, d’écritures persistantes, d’erreurs contrôlables ou d’un contrat API précis.

À ce stade, créez votre propre fausse API REST personnalisée. Apidog vous permet de définir votre schéma, de générer des données réalistes et de garder votre maquette synchronisée avec l’API que vous allez livrer.

Top comments (0)