Tutoriel : Utilisation de l'encodage Sqids
Remonter à Tutoriels Bases de données et LiveBindings
Ce tutoriel montre comment utiliser l'encodage Sqids dans RAD Studio. Sqids est une fonctionnalité pratique lorsque vous naviguez dans une structure de données comme une table de base de données.
Par défaut, RAD Server expose les URL susceptibles de contenir des informations internes spécifiques sur les enregistrements. Par exemple, il est censé identifier un enregistrement individuel en utilisant la clé primaire, souvent un ID. Par conséquent, les serveurs peuvent avoir des points de terminaison avec une fin semblable à /customer/12345.
Cette situation est loin d'être idéale pour plusieurs raisons, allant de la nécessité de ne pas partager des détails internes (qui pourraient ne pas être aussi neutres qu'un nombre) aux problèmes de sécurité associés à la révélation d'un identifiant d'enregistrement.
Il existe de nombreuses solutions à ce problème, impliquant principalement un mappage bidirectionnel de l'identifiant d'enregistrement sur une chaîne. Au lieu d'implémenter une solution personnalisée, à partir de RAD Studio 12.0, nous adoptons la bibliothèque Sqids.
Sommaire
Qu'est-ce que Sqids ?
Il s'agit d'une bibliothèque open source qui génère de courts ID à partir de nombres positifs (par exemple, en utilisant les paramètres par défaut de Sqids, 12345 est encodé en A6da).
De plus, Sqids permet l'encodage d'un ou plusieurs nombres positifs en un ID unique. Il n'existe pas de limite concernant la quantité de nombres à encoder, mais leur longueur est limitée (en fonction du langage d'implémentation).
Pour de plus amples informations sur Sqids, veuillez consulter la FAQ Sqids.
Exemple de code : comment utiliser l'encodage Sqids
Pour implémenter Sqids, RAD Studio 12.0 a introduit une nouvelle classe nommée System.NetEncoding.Sqids.TSqidsEncoding, qui fournit toutes les méthodes pour utiliser Sqids. Voici les étapes pour l'implémenter :
- Assurez-vous que l'unité System.NetEncoding.Sqids se trouve sous la clause
uses. - Créez l'instance TSqidsEncoding en utilisant la méthode Create.
- Encodez la ou les ID en utilisant la méthode Encode.
- Décodez-la en utilisant l'une des méthodes suivantes, en fonction des besoins de votre application :
- Vous pouvez détruire l'instance TSqidsEncoding en utilisant la méthode Destroy.
Adresser une requête à un serveur Web à l'aide de Sqids
Il existe deux façons d'adresser une requête à un serveur Web à l'aide de Sqids :
- L'encoder manuellement en utilisant les méthodes décrites ci-dessus.
- Commencer le nom du paramètre TRESTRequest.ResourceSuffix par
#.
Dans le second cas, lorsque c'est le moment d'envoyer une requête dont le nom de paramètre commence par #, TRESTClient crée automatiquement une instance de TSqidsEncoding en utilisant les propriétés TRESTClient.SqidsAlphabet et TRESTClient.SqidsMinLength.
D'autre part, dans une ressource RAD Server, lorsque le nom du paramètre ResourceSuffix commence par #, la valeur sera décodée par Sqids. La configuration de l'algorithme est basée sur le fichier EMSServer.ini, en particulier les paramètres Alphabet et MinHashLength :
[Server.Sqids] ;# The following options control URL parameters Sqids decoding ;# ;# Optional alphabet for Sqids decoding Alphabet= ;# Optional minimal hash length for Sqids decoding MinHashLength=0
Voir aussi
- System.NetEncoding.Sqids.TSqidsEncoding.Create
- System.NetEncoding.Sqids.TSqidsEncoding.Encode
- System.NetEncoding.Sqids.TSqidsEncoding.Decode
- System.NetEncoding.Sqids.TSqidsEncoding.DecodeSingle
- System.NetEncoding.Sqids.TSqidsEncoding.TryDecodeSingle
- System.NetEncoding.Sqids.TSqidsEncoding.DecodeToStr
- System.NetEncoding.Sqids.TSqidsEncoding.Destroy
- REST.Client.TRESTClient
- REST.Client.TRESTClient.SqidsAlphabet
- REST.Client.TRESTClient.SqidsMinLength