short是一个开源的短域名服务,使用Node.js与MongoDB搭建,可以直接在你的Server程序中调用,也可以通过Node.js的http server模块以一个服务启动。
可以直接通过Node.js的npm进行安装:
$ npm install short
你可以直接在你的Node.js项目中这样调用,生成长域名对应的短链接:
var mongoose = require("mongoose"); var short = require("short"); mongoose.connect("mongodb://localhost/short"); var URL = "http://nodejs.org/"; short.make(URL, function(error, shortURL) { if (error) { console.error(error); } else { short.get(shortURL.hash, function(error, shortURLObject) { if (error) { console.error(error); } else { var URL = shortURLObject[0].URL var hash = shortURLObject[0].hash; console.log(URL, hash); process.exit(1); }; }); } });
下面代码用于搭建一个提供短域名跳转的HTTP 服务:
var http = require("http"); var mongoose = require("mongoose"); var short = require("short"); mongoose.connect("mongodb://localhost/short"); var app = http.createServer(function(request, response) { var hash = request.url.slice(1); if (request.url === "/") { response.writeHead(200, { "Content-Type" : "text/html" }); response.write("URL not found!"); response.end(); } else { short.get(hash, function(error, shortURLObject) { if (error) { console.error(error); } else { if (shortURLObject) { var URL = shortURLObject[0].URL; response.writeHead(302, { "Location" : URL }); response.end(); } else { response.writeHead(200, { "Content-Type" : "text/html" }); response.write("URL not found!"); response.end(); } }; }); } }); app.listen(8080); console.log("> Open http://localhost:8080/kQ4c");