• Contenu
  • Bas de page
logo ouidoulogo ouidoulogo ouidoulogo ouidou
  • Qui sommes-nous ?
  • Offres
    • 💻 Applications métier
    • 🤝 Collaboration des équipes
    • 🛡️ Sécurisation et optimisation du système d’information
    • 🔗 Transformation numérique
  • Expertises
    • 🖥️ Développement logiciel
    • ♾️ DevSecOps
    • ⚙️ Intégration de logiciels et négoce de licences
      • Atlassian : Jira, Confluence, Bitbucket…
      • Plateforme monday.com
      • GitLab
      • SonarQube
    • 📚​ Logiciel de CRM et de gestion
    • 🎨 UX/UI design
    • 🌐 Accessibilité Numérique
    • 🗂️​ Démarches simplifiées
    • 📝 Formations Atlassian
  • Références
  • Carrières
    • 🧐 Pourquoi rejoindre Ouidou ?
    • ✍🏻 Nous rejoindre
    • 👨‍💻 Rencontrer nos collaborateurs
    • 🚀 Grandir chez Ouidou
  • RSE
  • Ressources
    • 🗞️ Actualités
    • 🔍 Articles techniques
    • 📖 Livres blancs
    • 🎙️ Interviews Clients
Nous contacter
✕
Le TDD, cet éternel incompris
Le TDD, cet éternel incompris
11 décembre 2020
Nouvelle année, nouveaux projets
Nouvelle année, nouveaux projets
12 janvier 2021
Ressources > Articles techniques > Mocker une API avec miragejs

Mocker une API avec miragejs

Article écrit par Gaëtan Dejaegere

Mocker toute une API est très utile, surtout dans les projets agiles, où nous travaillons en étroite collaboration avec le client, ou dans les projets headless, où une API REST est la principale interface de communication entre le frontend et le backend. Un bon mock d’API peut par exemple faciliter les tests et/ou révéler les problèmes d’UX et d’UI au début d’un projet. Dans cet article, nous évoquerons ce qui fait un bon mock d’API et pourquoi ce nouvel outil peut nous permettre de créer de meilleurs produits tout en réduisant les coûts. Nous introduirons la solution choisie chez Synbioz : Mirage JS

Pour commencer, listons les différentes raisons qui nous amènent à vouloir mettre en place un mock de notre API :

  • Le backend n’est pas prêt. Cela arrive régulièrement, car les équipes frontend et backend travaillent en parallèle, créant des moments de latence que l’on souhaite éviter.
  • Le contenu n’est pas prêt. Même si l’API existe, sans contenu dans la base de données – idéalement beaucoup de contenu – elle n’est pas très utile. Dans le cas d’une refonte, on partira d’un dump mais dans la majorité des cas cela nécessitera de rentrer manuellement des entrées en base. Cela s’avère souvent chronophage et peu enthousiasmant… De plus, quand cette tâche revient au client, celle-ci arrive tardivement dans la phase de développement.
  • On souhaite travailler par itérations rapides. Les projets évoluent au fil des mois, des demandes de modification surviennent naturellement et constituent une partie importante de la vie d’un projet. il est rare d’avoir la solution optimale dès le départ. En travaillant avec un mock, on gagne en qualité en favorisant les échanges avec le client sans exploser les coûts.

La mise en place de mock d’API n’est pas nouveau en soi et de nombreuses solutions existent. Des simples fichiers json à l’utilisation de services SaaS, nos diverses expériences nous ont amené à définir le portrait-robot de l’outil de mock idéal pour nos futurs projets. Pour être réellement utile, il doit nous permettre de :

  • Être aussi proche que possible de l’API définitive.
  • Être facile à mettre en place
  • Générer aisément de nombreuses données réalistes
  • Permettre d’écraser les données générées automatiquement
  • Permettre des itérations rapides
  • Être prévisible, pour être utilisable dans nos tests automatisés
  • Simuler des structures de données flexibles
  • Simuler des états et des cas particuliers prévus (ou non…) lors d’ateliers d’UX.

Une solution pragmatique : Mirage JS

https://miragejs.com/

Cette bibliothèque de mock d’API, issue de la communauté Ember est maintenant framework agnostic. Ces atouts sont multiples et en font un outil de choix face aux autres solutions à notre disposition (JSONServer, MSW, et divers services SaaS) :

  • Sa prise en main est rapide, son API intuitive
  • Sa mise en place est insolente de facilité (cf plus loin)
  • Il permet de reproduire la forme exacte de l’API de production (contrairement à JSON server)
  • Il n’affecte pas le code de l’application. C’est l’API de production qui détermine la configuration de Mirage JS, et non l’inverse.
  • Il s’exécute dans le navigateur en même temps que le code front, pas de processus supplémentaires à gérer.
  • Il intègre un ORM.
  • Il possède un puissant système de seeds, fixtures et factories
  • Possibilité de facilement se brancher au localStorage pour ajouter de la persistance.

Installation

npm install --save-dev miragejs 

Définition du serveur de mock

// server.js import { Server, Model } from 'miragejs'  export function makeServer({ environment = "development" } = {}) {    let server = new Server({     environment,      models: {       todo: Model     },      seeds(server) {       server.create("todo", { content : "Learn Mirage JS" })     },      routes() {       this.namespace = "api"       this.get("/todos")     }   })    return server } 

Intégration dans notre application

//main.js import { makeServer } from "./server"  if (process.env.NODE_ENV === "development") {   makeServer() }  fetch("/api/todos") // [{ id: 1, content : "Learn Mirage JS" }]   .then(res => res.json())   .then(json => {     const todos = json.todos   }); 

Outils complémentaires

  • https://miragejs.com/repl bac à sable pour se familiariser avec l’API de Mirage JS ;
  • https://github.com/FrediBach/Blowson aide à la génération de fixtures ;
  • https://github.com/Marak/Faker.js générateur de contenu aléatoire.

Chez Synbioz, l’utilisation de Mirage JS dans nos projets n’est pas systématique. Il est cependant devenu un compagnon de route idéal sur lequel on se repose soit en début de projet, soit par petites touches pour éprouver une nouvelle feature sans engager des travaux sur une API existante.

À lire aussi

Conférence A11Y miniature
30 juin 2025

Retour sur la Conférence A11Y Paris

Lire la suite

Image miniature annotations Spring Boot
26 juin 2025

Annotations Spring Boot peu connues mais pratiques

Lire la suite

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique

Lire la suite

intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 

Lire la suite

Articles associés

Conférence A11Y miniature
30 juin 2025

Retour sur la Conférence A11Y Paris


Lire la suite
Fresque numérique miniature image
16 avril 2025

Fresque du Numérique


Lire la suite
Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 


Lire la suite

À propos

  • Qui sommes-nous ?
  • Références
  • RSE
  • Ressources

Offres

  • Applications métier
  • Collaboration des équipes
  • Sécurisation et optimisation du système d’information
  • Transformation numérique

Expertises

  • Développement logiciel
  • DevSecOps
  • Intégration de logiciels et négoce de licences
  • Logiciel de CRM et de gestion
  • UX/UI design
  • Accessibilité Numérique
  • Démarches simplifiées
  • Formations Atlassian

Carrières

  • Pourquoi rejoindre Ouidou ?
  • Nous rejoindre
  • Rencontrer nos collaborateurs
  • Grandir chez Ouidou

SIEGE SOCIAL
70-74 boulevard Garibaldi, 75015 Paris

Ouidou Nord
165 Avenue de Bretagne, 59000 Lille

Ouidou Rhône-Alpes
4 place Amédée Bonnet, 69002 Lyon

Ouidou Grand-Ouest
2 rue Crucy, 44000 Nantes

Ouidou Grand-Est
7 cour des Cigarières, 67000 Strasbourg

  • Linkedin Ouidou
  • GitHub Ouidou
  • Youtube Ouidou
© 2024 Ouidou | Tous droits réservés | Plan du site | Mentions légales | Déclaration d'accessibilité
    Nous contacter