Dengan perkembangan Internet, pautan pendek telah menjadi satu bentuk pautan yang sangat popular. Pautan pendek bukan sahaja boleh memendekkan panjang pautan, tetapi juga mencantikkan pautan dan meningkatkan kadar klik lalu pengguna. Artikel ini akan memperkenalkan cara melaksanakan pautan pendek dengan Node.js.
Pautan pendek sebenarnya ialah rentetan aksara, sepadan dengan pautan panjang. Kelebihan pautan pendek ialah ia boleh mengurangkan panjang pautan, mencantikkan pautan dan meningkatkan kadar klik lalu pengguna.
Biasanya, perkhidmatan pautan pendek disediakan oleh pihak ketiga, yang menghasilkan pautan pendek berdasarkan pautan panjang pengguna dan kemudian mengubah hala ke alamat pautan panjang asal. Terdapat banyak perkhidmatan sedemikian, seperti Bitly, TinyURL, dsb.
Node.js ialah sumber terbuka, persekitaran berjalan JavaScript merentas platform yang membenarkan JavaScript dijalankan pada bahagian pelayan . Berbanding dengan bahasa sebelah pelayan yang lain, kelebihan terbesar Node.js ialah konkurensi yang tinggi dan ringan, yang boleh bertindak balas dengan cepat kepada permintaan pengguna dan mengendalikan permintaan serentak yang sangat besar.
Satu lagi kelebihan utama Node.js ialah pengurus pakej NPM, yang mempunyai sejumlah besar modul ringan yang tersedia, yang sangat mengurangkan kerumitan pembangunan dan meningkatkan kecekapan pembangunan.
Oleh itu, menggunakan Node.js untuk melaksanakan pautan pendek bukan sahaja boleh membalas permintaan dengan cepat, tetapi juga dengan mudah menggunakan pengurus pakej NPM untuk mengurus kebergantungan.
Artikel ini akan melaksanakan pautan pendek mengikut langkah berikut:
3.1 Hasilkan kod pendek
Inti penjanaan kod pendek adalah menggunakan kod panjang unik Mengambil nilai integer sebagai input dan menukarnya menjadi rentetan. Jelas sekali, input integer panjang perlu cukup besar, jika tidak bilangan kod pendek akan sangat terhad.
Dalam pelaksanaan khusus, abjad dan nombor boleh digunakan untuk mengekod, dan nilai integer yang panjang boleh ditukar kepada rentetan arbitrari, seperti 32 asas atau 62 asas.
Berikut ialah contoh kod untuk menjana kod pendek:
const alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; const base = alphabet.length; function encode(num) { let encoded = ''; while (num) { const remainder = num % base; num = Math.floor(num / base); encoded = alphabet[remainder].toString() + encoded; } return encoded; }
Kod di atas menjana fungsi yang boleh mewakili rentetan heksadesimal. Untuk nilai integer input, fungsi ini menukarkannya kepada rentetan 62 digit melalui kaedah baki berterusan, dan akhirnya mengembalikan rentetan yang dijana.
3.2 Menyimpan hubungan pemetaan antara kod pendek dan pautan panjang
Dalam perkara di atas, kami telah menyedari penjanaan kod pendek, dan langkah seterusnya ialah menyimpan hubungan pemetaan antara kod pendek dan pautan panjang di sini kami memilih untuk menggunakan Redis sebagai pangkalan data storan.
Redis ialah pangkalan data storan nilai kunci yang cekap yang ditulis dalam bahasa C Ia boleh membaca dan menulis data dengan cepat Ia juga menyokong pembinaan kluster dan sangat sesuai untuk digunakan sebagai storan data untuk aplikasi konkurensi tinggi.
Berikut ialah contoh kod untuk menggunakan Redis untuk menyimpan perhubungan pemetaan dalam Node.js:
const redis = require('redis'); const client = redis.createClient({ host: 'localhost', port: 6379 }); function saveUrl(url, callback) { client.incr('short:id', function(err, id) { if (err || !id) { return callback(err); } const shortUrl = encode(id); client.set(`short:${shortUrl}`, url, (err) => { if (err) { return callback(err); } callback(null, shortUrl); }); }); }
Dalam kod di atas, kami mula-mula menggunakan perintahincr
untuk mendapatkan auto- unik id tambahan daripada Redis . Kemudian, kodkan id itu ke dalam kod pendek dan gunakan perintahset
untuk menyimpan kod pendek dan pemetaan pautan panjang ke Redis.
3.3 Menghuraikan pautan pendek dan mengubah hala
Akhir sekali, kami melaksanakan laluan yang mengendalikan permintaan untuk menghuraikan pautan pendek dan mengubah hala pengguna ke alamat pautan panjang.
Berikut ialah contoh kod untuk melaksanakan fungsi ubah hala dalam Node.js:
const http = require('http'); const url = require('url'); http.createServer(function (req, res) { const shortUrl = url.parse(req.url).pathname.slice(1); client.get(`short:${shortUrl}`, function (err, url) { if (err) { return console.error(err); } if (!url) { res.writeHead(404); return res.end('404 Not Found'); } res.writeHead(301, { Location: url }); res.end(); }); }).listen(8080, () => console.log('Listening on port 8080...'));
Dengan kod di atas, kami menggunakanhttp.createServer
untuk mencipta contoh HttpServer dan menggunakan Modul menyelesaikan sambungan yang diminta.url
untuk mengubah hala ke alamat pautan asal.res.writeHead
Atas ialah kandungan terperinci Nodejs melaksanakan pautan pendek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!