三步带你开发一个短链接生成平台

前端开发 作者: 2024-08-22 02:40:01
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前段时间在开发【葡萄城社区】公众号时有一个功能是需要用网页授权认证地址生成二
express -e demo

   change directory:
     > cd demo

   install dependencies:
     > npm 

   run the app:
     > SET DEBUG=demo:* & npm start
npm install
npm install mongoose 
npm install shortid
npm install body-parser
  • 在这个应用中,我们使用了mongodb,之所以选择它是因为执行高效且低开销,所以执行起来也很高效,不过如果使用其他数据库也是没问题的。这里的mongoose就是npm的一个包,主要是为程序提供连接mongodb并增删查改的功能。
  • 通过使用shortid可以生成一个指定字符不重复的编码,便于我们生成类似xxx.com/ngTsfdgh 类似红字部分的编码。
  • 由于我们生成短链接部分的api使用的是post方法,使用body-parser可以多扩展一种body编码类型解析能力。
module.exports = {
    mongo_base_connection_url: 'mongodb://localhost:27017',mongo_db: 'mongodb://localhost:27017/shorturl',mongo_options: {
        autoReconnect: true,keepAlive: true,reconnectTries: 50,reconnectInterval: 1000,connectTimeoutMS: 5000000,}
}
console.log("Connection local mongo db");
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var urlSchema = new Schema({
  shortUrl: String,longUrl: String
});

module.exports = mongoose.model('UrlTable',urlSchema);
var index = require('./routes/index');
var url = require('./routes/url');
app.use('/',index);
app.use('/url',url);

生成短链接页面

const express = require("express");
const router = express.Router();
const shortId = require('shortid');
const UrlTable = require('../models/urltable');
const mongoose = require('mongoose');
var setup = require('../dbconfig/db');

router.post('/',function(req,res,next) {
    var params = req.body;
    var url = params.longUrl;
shortId.characters(' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ^*')
    var shortid = shortId.generate();
    var objurl = { shortUrl: shortid,longUrl: url};
    mongoose.connect(setup.mongo_db,setup.mongo_options);
    UrlTable.create(objurl,function (err,objurl) {
      //if (err) console.log(err);
      res.send("http://localhost:3000/" + shortid);
    });
    return;
});

短链接跳转页面

const express = require("express");
const router = express.Router();
const UrlTable = require('../models/urltable');
const mongoose = require('mongoose');
var setup = require('../dbconfig/db');

router.get('/:shortUrl',function (req,next) {
    var shortUrl = req.params.shortUrl;
    mongoose.connect(setup.mongo_db,setup.mongo_options);
    UrlTable.findOne({ shortUrl:shortUrl }).then((result) => {
       //待添加错误处理
	res.redirect(result.longUrl);
    })
});

module.exports = router;
npm start
     
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_66429.html