Nas suas aplicações, quantas vezes você já precisou de um código único? Seja para identificar um cadastro, um produto no pedido, etc?
O GUID é confiável, mas tem um tamanho exagerado, não? Podemos concordar que ele é ininteligível e difícil de decorar?
Pois bem, encontrei uma alternativa que gostaria de compartilhar: [HASH-ID[(https://hashids.org/).
Uma biblioteca openSource que tem implementações em diversas linguagens e plataformas: JavaScript, Ruby, Python, Java, Scala, PHP, Perl, Perl 6, Swift, Clojure, Objective-C, C, C++11, D, F#, Go, Erlang, Lua, Haskell, OCaml, Elixir, Rust, Smalltalk, ColdFusion, Kotlin, Nim, VBA, Haxe, Crystal, Elm, ActionScript, Bash, R, TSQL, PostgreSQL, PLpgSQL, Dart, Io and for .NET
É muito fácil de usar. Veja um exemplo de código em CSharp:
public string GerarCodigoDaVenda(){
return Nanoid.Nanoid.Generate(
alphabet: "1234567890abcdefghijklmnopqrstuwvxyz",
size: 10
);
}
No trecho de código acima, eu delimitei a variedade de caracteres que o NanoID vai utilizar, além de especificar o tamanho em 10 caracteres.
Variações do NanoID:
- Normal
// Na modalidade padrão, o método usa símbolos amigáveis com URLS (A-Za-z0-9_~), e retorna um ID com 21 caracteres (chances de colisão similares ao formato UUID v4).
var idNormal = Nanoid.Generate();
//resultado: "Uakgb_J5m9g~0JDMbcJqLJ"
// Símbolos -,.() não são codificados em URL´s.
// Se você quiser reduzir o tamanho do ID, passe o tamanho como argumento:
var idReduzido = Nanoid.Generate(size:10)
//resultado "IRFa~VaY2b"
- Customizado
// ⚠️ A variação de caracteres deve conter 256 símbolos ou menos. De outra forma não será seguro.
var id = Nanoid.Generate('1234567890abcdef', 10) //=> "4f90d13a42"
Top comments (0)