Bonjour,
Dans le cadre de l’exposition de nos objets métier via les API REST Simplicité, nous sommes aujourd’hui limités à l’utilisation du row_id comme identifiant technique dans les endpoints.
Or, pour certains objets métier, nous disposons d’une clé fonctionnelle stable, connue des systèmes consommateurs et déjà utilisée comme clé d’unicité métier.
Dans notre cas concret, nous avons l’objet LbcLegalText, dont la clé fonctionnelle est portée par l’attribut LegalTextId.
Besoin fonctionnel
Permettre aux consommateurs de l’API de retrouver, lire, mettre à jour ou supprimer une ressource directement à partir de sa clé fonctionnelle, sans avoir à effectuer au préalable une recherche pour récupérer le row_id.
Cela permettrait d’exposer des endpoints plus lisibles et plus alignés avec le modèle métier, par exemple : functionalkey =legalTextId
GET /legalTexts/{functionalkey}
en + de :
GET /legalTexts/{row_id}
Question ouverte sur les possibilités Simplicité (choix d’implémentation)
Nous avons identifié deux approches possibles côté framework, et souhaiterions avoir votre avis sur celle à privilégier, ou sur l’existence d’un mécanisme natif équivalent.
Approche “path param étendu”
- Autoriser un endpoint du type :
GET /legalTexts/{functionalKey}
- Avec une résolution interne du
functionalKeyvers lerow_id(via recherche sur la clé fonctionnelle). - Le format pourrait être reconnu implicitement ou via une configuration spécifique au niveau de l’objet.Cette solution est dégradé (en réflexion, dans l’hypothèse qu’on saura patcher la requete).
Approche via URI_MAPPING / routage personnalisé
- Déclarer un mapping spécifique reconnaissant un format de path dédié
(ex :/legalTexts/by-functional-key/{key}) - Déclencher automatiquement un
searchou unselectbasé sur la clé fonctionnelle.
Points de réflexion complémentaires
-
Objets avec plusieurs clés fonctionnelles :
Existe-t-il une recommandation pour gérer ce cas de manière standard (mapping explicite, configuration par objet, priorité d’une clé) ? -
Tables d’association exposées en API :
pour les objets d’association, lerow_idn’a généralement pas de sens métier et les clés sont souvent composites.
Dans notre cas, nous avons les objetsLegalTextetContent, liés via la table d’associationlbcLegalTextContent, exposée en API.
Fonctionnellement, l’unicité d’un contenu n’est pas portée par uncontentIdtechnique (équivalent aurow_id), mais par leLegalTextIdassocié et la langue du contenu.
Dans ce contexte, nous souhaiterions exposer l’association via une clé fonctionnelle composite dans l’API (par exemple) : {functionalkey} = {legalTextId} - {contentLanguage}
GET /legalContent/{functionalkey}
Existe-t-il des bonnes pratiques ou mécanismes recommandés dans Simplicité pour exposer ce type de ressource d’association par clé fonctionnelle, ou via des sous-ressources REST ?
L’objectif n’est pas de remplacer le row_id, mais de d’ajouter un accès REST plus métier et optionnel, tout en restant compatible avec les standards Simplicité et les évolutions futures.
Merci d’avance pour votre retour et vos recommandations.
Cordialement,

