Началось с того, что я решил попробовать Redis в каком-нить проекте, а поскольку давно планировал сделать собственную сокращалку ссылок, то решил именно ее и написать. Связка NodeJS + Redis вообще показалась наиболее легко реализуемой. Закончилось тем что помимо Redis написал еще и реализацию для MongoDB.
Не буду вдаваться в подробности сравнения MongoDB и Redis, на эту тему итак уже написано куча статей (Comparing MongoDB And Redis Part 1 и Part 2. Для реализации сокращалки Redis’а хватает за глаза, он вообще более дружественен и прост в реализации к такого рода задачам.
Скачать мой Node Url Shortener можно на Github.
Для установки надо подтянуть дополнительные пакеты из npm. Прежде всего это ExpressJS, а также пакет для работы с Redis или MongoDB.
git clone https://github.com/dotzero/node-url-shortener nus
cd nus
npm install
Далее надо отредактировать файл ./config.js и запустить app.js через NodeJS. Планирую пользовать исключительно через API, поэтому с веб-интерфейсом особо не заморачивался. Реализация API почти такая же как у goo.gl.
Для сокращения ссылок:
GET /api/v1/shorten/?long_url=http://www.google.com
JSON ответ
{
status_code: 200
status_txt: "OK"
hash: "Mw"
url: "http://localhost/Mw"
long_url: "http://www.google.com"
}
И для разворачивания коротких ссылок
GET /api/v1/expand/?short_url=http://localhost/Mw