Qu'est-ce que Sqids ?

Sqids est une bibliothèque open source qui vous permet de générer des identifiants courts uniques à partir de nombres. Ces identifiants sont sûrs pour les URL, peuvent encoder plusieurs nombres et ne contiennent pas de mots grossiers courants. Lire la suite .

Voici à quoi ils ressemblent :

https://example.com/Lqj8a0

Exemple rapide d'encodage et de décodage :

let sqids = Sqids.make () in
let id = Sqids.encode sqids [1; 2; 3] in (* "86Rf07" *)
let numbers = Sqids.decode sqids id in (* [1; 2; 3] *)

Si les identifiants sont trop courts, vous pouvez les compléter jusqu'à une certaine longueur :

let sqids = Sqids.make ~min_length:10 () in
let id = Sqids.encode sqids [1; 2; 3] in (* "86Rf07xd4z" *)
let numbers = Sqids.decode sqids id in (* [1; 2; 3] *)

Créer des identifiants uniques en mélangeant l'alphabet :

let sqids = Sqids.make ~alphabet:"k3G7QAe51FCsPW92uEOyq4Bg6Sp8YzVTmnU0liwDdHXLajZrfxNhobJIRcMvKt" () in
let id = Sqids.encode sqids [1; 2; 3] in (* "XRKUdQ" *)
let numbers = Sqids.decode sqids id in (* [1; 2; 3] *)

La documentation complète est disponible à https://github.com/sqids/sqids-ocaml

Si vous recherchez l'Hashids OCaml original, vous pouvez le trouver ici : https://github.com/jacquev6/hashids-ocaml

Cas d'utilisation

L'utilisation principale de Sqids est purement visuelle. Si vous souhaitez utiliser des identifiants au lieu de nombres dans votre projet, Sqids pourrait être un bon choix.

Bons pour

  • Encodage des clés primaires Si vous utilisez une base de données relationnelle
  • Économie de recherches dans la base de données En encodant plusieurs objets
  • Jetons de connexion temporaires Sans grossièretés et sûr pour les URL

Pas bons pour

  • Données sensibles Ce n'est pas une bibliothèque de chiffrement
  • Identifiants utilisateur Peut révéler le nombre d'utilisateurs si quelqu'un découvre l'alphabet de codage

Fonctionnalités

  • 🆔 Générer des identifiants courts à partir de nombres non négatifs
  • Encodage et décodage faciles
  • 🫣 Les identifiants générés ne contiennent pas de grossièretés courantes
  • 🎲 Support des identifiants personnalisés via un alphabet mélangé
  • 🥳 45 intégrations (84% utilisent un nouveau design)
  • 📌 Chaque version produit les mêmes identifiants
  • 🍻 Petite bibliothèque avec une licence permissive

Exemple / Espace de jeu