JSON-LD : le contrat que le front attendait
La plupart des fronts d’application de gestion sont un copier-coller géant. Une liste de clients, une liste de factures, une liste de produits : trois écrans qui font la même chose, écrits trois fois, maintenus trois fois, cassés trois fois.
On s’en accommode parce que le JSON classique ne dit rien de lui-même. { "id": 12, "name": "Dupont" } : impossible de savoir quel type c’est, quels champs existent vraiment, quelles opérations sont autorisées. Le front doit tout redire en dur — donc tout redire à chaque écran.
Ce que change une ressource qui se présente
JSON-LD ajoute le contexte manquant. Chaque ressource porte son identifiant global et son type :
{
"@context": "/api/contexts/Client",
"@id": "/api/clients/12",
"@type": "Client",
"name": "Dupont",
"invoices": [{ "@id": "/api/invoices/88" }]
}Trois lignes, et tout devient possible. @id est une URL : c’est à la fois la clé de cache et l’adresse de rechargement. Une relation n’est plus un entier opaque, c’est un lien qu’on peut suivre. Et @type permet au front de demander « comment j’affiche ça ? » sans savoir à l’avance ce que « ça » est.
Hydra, la couche au-dessus, ajoute les opérations disponibles et la pagination. L’API ne renvoie plus seulement des données : elle renvoie ce qu’on a le droit d’en faire.
Un registre plutôt que des conditions
À partir de là, la brique centrale du front devient un registre : on associe des métadonnées d’affichage à un type d’IRI, et les composants interrogent ce registre au lieu de tester le type à la main. Un composant de liste ne connaît plus aucune ressource ; il connaît la forme d’une collection Hydra.
Le même raisonnement s’applique aux formulaires. Le schéma décrit les champs, leurs types, ce qui est requis ; le formulaire se construit à partir de ça. On n’écrit plus des formulaires, on écrit les quelques contrôleurs de champs qui manquent.
Où la magie s’arrête
Une couche générique est excellente pour les 80 % d’écrans qui se ressemblent — et devient une prison pour les 20 % restants. Le tableau de bord métier, l’écran avec sa règle de gestion tordue, la vue qui agrège cinq ressources : ceux-là s’écrivent à la main, et c’est très bien.
La règle qui a le mieux tenu chez moi : la couche générique doit toujours pouvoir être court-circuitée. Le jour où il faut la contourner par une option de configuration, c’est qu’il fallait écrire l’écran à la main.