Xmysql est petit programme écrit en NodeJS qui automatise la création d'une API REST à partir d'une base de données MySQL. Chaque table peut donc être interrogée via l'API créée.

Xmysql a été créé dans le but de faciliter l'implémentation d'une API lors de l'apprentissage d'un framework frontend. Son créateur a continué l'expérience et a implémenté plusieurs fonctionnalités intéressantes dans Xmysql.

Avec une ligne de commande, vous pouvez générer autant d'endpoints que de tables existent dans votre base de données. Parmi les fonctionnalités, voici ce qu'on retrouve :

  • prise en charge des clés primaires
  • fonctions communes CRUD, list, findOne, count, exists, distinct, ...
  • insertions et suppressions groupées
  • pagination
  • tri
  • filtrages
  • group by, having
  • jointures
  • prise en charge des vues
  • upload de fichiers
  • ...

Installation

Vous devez au préalable avoir NodeJS installé, de même qu'un serveur MySQL avec une base de données.

L'installation se fait classiquement :

npm install -g xmysql

Utilisation

Création de l'API

Voici la commande à exécuter pour générer l'API :

xmysql -h localhost -u mysqlUsername -p mysqlPassword -d databaseName

Pour les tests, j'ai utilisé un sample de base de données disponible ici.

Le script indique le nombre de tables trouvées dans la base communiquée, le temps d'exécution et l'URL de base pour l'API.

Utilisation de l'API

En appelant l'URL fournie, vous obtenez les différentes URL générées par Xmysql :

En prenant l'URL permettant de lister tous les éléments de ma table departments :

Vous avez à votre disposition pléthore d'URL pour interroger votre base de données ! Vous pouvez faire des tris, des sélections de colonnes, des group by, des jointures, etc...

La documentation très fournie de Xmysql vous décrit en détail toutes les possibilités de l'outil.

Le seul inconvénient que je lui trouve est que l'API générée est accessible à toute personne connaissant son URL de base... Une authentification serait primordial.

L'auteur de Xmysql travaille sur un autre outil, XgeneCloud, qui va beaucoup plus loin dans les fonctionnalités : compatible avec de multiples moteurs de bases de données (MySQL, PostgreSQL, MSSQL, SQLite, MariaDb, ...), interface graphique, etc...