Réflexion sur la sortie JSON

Le ticket #14 de gcli consiste à lui ajouter une sortie json. J’ai commencé par le faire pour une commande (gcli -o json identity show) puis je me suis demandé pourquoi on en arrivait là, et voici ce que j’en pense :

  • la sortie json est à destination des machines plus que des humains
  • elle vise donc à être intégrée à des scripts, donc à redouter des changements d’API
  • pour la plupart des cas, le même résultat pourrait être obtenu avec une requête graphql en curl
  • la solution précédente est donc vécue comme trop compliquée
  • il faudrait répondre à ce besoin d’accéder aux données de manière simple

Ça fait un moment que je pense qu’il faudrait fournir une API JSON similaire à la partie “GET” d’une API REST parce que les gens sont plus habitué à ça et qu’ils seront plus à l’aise pour construire des choses dessus. Créer un outil similaire en ligne de commande intégrable dans un script bash / jq serait une occasion de faire d’une pierre deux coups. L’équivalence pourrait ressembler à ça :

# --- identité ---
# commande
cli identity 61
[...]
# route HTTP GET dans l'url
/identity/61
[...]

# --- compte ---
# commande
cli account 5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn
[...]
# route HTTP GET dans l'url
/account/5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn
[...]

[...] est le même résultat en JSON. On pourrait versionner cette API pour éviter de casser les scripts. C’est un outil très facile à construire, il suffit de choisir des routes et les requêtes graphql correspondantes. Si quelqu’un veut s’y essayer, il peut essayer avec Altaïr Graphql.

3 Likes