返回

Node.js 和 Express.js 构建的短网址服务

前端

前言

短网址是一种将长网址缩短为更简洁易记的形式的服务。短网址服务广泛应用于社交媒体、电子商务、营销等领域。本文将介绍如何使用 Node.js 和 Express.js 构建一个短网址服务,并使用腾讯云数据库存储短网址。

环境准备

安装 Node.js 和 Express.js

首先,您需要在您的计算机上安装 Node.js 和 Express.js。您可以通过以下命令安装:

npm install -g nodejs
npm install -g express

创建项目

创建一个新目录,并将其作为您的项目目录。然后,在该目录中创建一个名为 package.json 的文件,并添加以下内容:

{
  "name": "short-url",
  "version": "1.0.0",
  "description": "A short URL service built with Node.js and Express.js",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.17.1",
    "mongodb": "^4.4.0"
  }
}

安装依赖

使用以下命令安装项目所需的依赖:

npm install

构建短网址服务

创建数据库

首先,您需要创建一个数据库来存储短网址。您可以使用腾讯云数据库来创建数据库。

连接数据库

使用 mongoose 库来连接数据库。在您的项目目录中创建一个名为 db.js 的文件,并添加以下内容:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/short-url', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

const db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  console.log('Connected to MongoDB');
});

module.exports = db;

创建短网址模型

创建一个名为 ShortUrl 的模型来存储短网址。在您的项目目录中创建一个名为 short-url.js 的文件,并添加以下内容:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const ShortUrlSchema = new Schema({
  originalUrl: {
    type: String,
    required: true
  },
  shortUrl: {
    type: String,
    required: true,
    unique: true
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

const ShortUrl = mongoose.model('ShortUrl', ShortUrlSchema);

module.exports = ShortUrl;

创建路由

在您的项目目录中创建一个名为 routes.js 的文件,并添加以下内容:

const express = require('express');
const router = express.Router();
const ShortUrl = require('./short-url');

// 生成短网址
router.post('/generate', async (req, res) => {
  const originalUrl = req.body.originalUrl;
  const shortUrl = await ShortUrl.create({ originalUrl });
  res.json({ shortUrl: shortUrl.shortUrl });
});

// 获取原始网址
router.get('/:shortUrl', async (req, res) => {
  const shortUrl = req.params.shortUrl;
  const originalUrl = await ShortUrl.findOne({ shortUrl }).originalUrl;
  res.redirect(originalUrl);
});

module.exports = router;

启动服务

在您的项目目录中创建一个名为 index.js 的文件,并添加以下内容:

const express = require('express');
const app = express();
const router = require('./routes');

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use('/', router);

app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

测试服务

您可以通过以下步骤测试服务:

  1. 启动服务:在您的项目目录中运行 node index.js 命令。
  2. 生成短网址:使用以下命令生成一个短网址:
curl -X POST http://localhost:3000/generate -H 'Content-Type: application/json' -d '{"originalUrl": "https://www.google.com/"}'
  1. 获取原始网址:使用以下命令获取原始网址:
curl http://localhost:3000/ABC123

如果一切正常,您应该会看到原始网址。

结语

本文介绍了如何使用 Node.js 和 Express.js 构建一个短网址服务,并使用腾讯云数据库存储短网址。本指南提供了详细的步骤和示例代码,希望对您有所帮助。