algorithm - URLエンコード - URLショートナーを作成するにはどうすればいいですか?

URL Standard / algorithm / url

入力フィールドに長いURLを入力してURLを「 http://www.example.org/abcdef 」に短縮するURL短縮サービスを作りたい。

short = '';
if divisible by 2, add "a"+the result to short
if divisible by 3, add "b"+the result to short
... until I have divisors for a-z and A-Z.

Peter Mortensen



Answer #1

データベース内のドメインごとに整数シーケンスをインクリメントし続け、Hashidsを使用して整数をURLパスにエンコードします。

static hashids = Hashids(salt = "my app rocks", minSize = 6)

これがそのコンセプトです。

function addDomain(domain) {
    table("domains").insert("domain", domain, "seq", 0)
}

function addURL(domain, longURL) {
    seq = table("domains").where("domain = ?", domain).increment("seq")
    shortURL = domain + "/" + hashids.encode(seq)
    table("links").insert("short", shortURL, "long", longURL)
    return shortURL
}

// GET /:hashcode
function handleRequest(req, res) {
    shortURL = req.host + "/" + req.param("hashcode")
    longURL = table("links").where("short = ?", shortURL).get("long")
    res.redirect(301, longURL)
}