¿Qué es Sqids?

Sqids es una biblioteca de código abierto que te permite generar identificadores cortos únicos a partir de números. Estos IDs son seguros para URL, pueden codificar varios números y no contienen palabras malsonantes comunes. Leer más .

Así es cómo lucen:

https://example.com/Lqj8a0

Ejemplo rápido de codificación y decodificación:

Sqids = sqids:new(),
Id = sqids:encode([1, 2, 3], Sqids). % "86Rf07"
Numbers = sqids:decode(Id, Sqids). % [1,2,3]

Si los IDs son muy cortos, puedes rellenarlos hasta cierta longitud:

Sqids = new(#{ min_length=>10 }),
Id = sqids:encode([1, 2, 3], Sqids). % "86Rf07xd4z"
Numbers = sqids:decode(Id, Sqids). % [1,2,3]

Crea IDs únicos al barajar el alfabeto:

Sqids = new(#{ alphabet=><<"k3G7QAe51FCsPW92uEOyq4Bg6Sp8YzVTmnU0liwDdHXLajZrfxNhobJIRcMvKt">> }),
Id = sqids:encode([1, 2, 3], Sqids). % "XRKUdQ"
Numbers = sqids:decode(Id, Sqids). % [1,2,3]

La documentación completa está en https://github.com/sqids/sqids-erlang

Si estás buscando el Hashids Erlang original, puedes encontrarlo aquí: https://github.com/snaiper80/hashids-erlang

Casos de uso

El uso principal de Sqids es puramente visual. Si prefieres usar IDs en lugar de números en tu proyecto, Sqids podría ser una buena elección.

Bueno Para

  • Codificación de claves primarias Si estás usando una base de datos relacional
  • Ahorro de consultas a la base de datos Al codificar varios objetos
  • Tokens de inicio de sesión temporales Libre de vulgaridades y seguro para URL

No Bueno Para

  • Datos sensibles Esto no es una biblioteca de encriptación
  • IDs de Usuario Puede revelar la cantidad de usuarios si alguien descubre el alfabeto de codificación

Características

  • 🆔 Generar IDs cortos a partir de números no negativos
  • Codificación y decodificación sencillas
  • 🫣 Los IDs autogenerados no contienen palabras malsonantes comunes
  • 🎲 Soporte para IDs personalizados a través de un alfabeto aleatorio
  • 🥳 45 integraciones (84% utilizan un nuevo diseño)
  • 📌 Cada versión produce los mismos IDs
  • 🍻 Biblioteca pequeña con una licencia permisiva

Ejemplo / Playground