Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Nodejs melaksanakan pautan pendek

Nodejs melaksanakan pautan pendek

WBOY
WBOYasal
2023-05-28 12:47:08772semak imbas

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.

  1. Apakah itu pautan pendek

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.

  1. Mengapa menggunakan Node.js untuk melaksanakan pautan pendek

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.

  1. Langkah pelaksanaan

Artikel ini akan melaksanakan pautan pendek mengikut langkah berikut:

  1. Jana kod pendek
  2. Penyimpanan pautan pendek Perhubungan pemetaan antara kod dan pautan panjang
  3. Menghuraikan pautan pendek dan ubah hala

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 perintah incr untuk mendapatkan auto- unik id tambahan daripada Redis . Kemudian, kodkan id itu ke dalam kod pendek dan gunakan perintah set 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 menggunakan http.createServer untuk mencipta contoh HttpServer dan menggunakan Modul menyelesaikan sambungan yang diminta. url

Kemudian, kami mendapat pautan asal yang sepadan dengan pautan pendek daripada Redis, dan menggunakan

untuk mengubah hala ke alamat pautan asal. res.writeHead

Sudah tentu, kita juga perlu mempertimbangkan kesahihan abnormal pautan pendek Sebagai contoh, jika pautan pendek tidak ditemui dalam pangkalan data, ralat 404 harus dikembalikan.

    Ringkasan
Artikel ini memfokuskan kepada cara menggunakan Node.js untuk melaksanakan pautan pendek, bermula daripada menjana pautan pendek, menyimpan hubungan pemetaan antara kod pendek dan pautan panjang , dan menghuraikan pautan pendek Tiga aspek pengalihan menghuraikan langkah pelaksanaannya.

Di sini kami menggunakan Redis untuk melaksanakan storan data, melaksanakan pengalihan melalui penghalaan mudah dan interaksi http, dan menggunakan nodej untuk bekerja dengan Redis untuk mencipta pengalaman pembangunan yang cekap dan menyenangkan, membolehkan kami mencapai pembangunan pesat Laksanakan perkhidmatan pautan pendek .

Atas ialah kandungan terperinci Nodejs melaksanakan pautan pendek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn