4ye短网址服务 - mindpin/knowledge-space-net-lib GitHub Wiki

服务

4ye.me 以如下形式提供短网址服务

对于任意URL地址,在 4ye.me 中都可通过一个短网址来进行重定向,短网址形如:

s.4ye.me/xxxxxx 

xxxxxx 代表 6个英文大小写字母或数字。
取值范围为

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

共 26 + 26 + 10 = 62 个字符
(可以直接照搬原来的全局 randstr 方法来生成这个字符串)

实现方法

实现一个短网址类 ShortUrl,使用方法如下:

su = ShortUrl.parse(url)
su.short_url # 短网址
su.long_url # 长网址

例如:

su = ShortUrl.parse 'http://oppia.4ye.me/'
su.short_url # -> http://s.4ye.me/8szyc5
su.long_url # -> http://oppia.4ye.me/

传入的网址必须以 http:// 开头,否则不合法。传入的网址被当做一个字符串整体处理。
http://oppia.4ye.me/http://oppia.4ye.me 被认为是不同的网址
调用6位随机字符串生成方法生成随机串,然后把随机串和原始网址存入 mongoDB 数据库
生成6位串时需要先查一下库,看看有没有重复的6位串。如果有就重新生成

当把一个短网址用 parse 方法处理时,判断这个网址是短网址,然后查数据库:

su = ShortUrl.parse 'http://s.4ye.me/8szyc5'
su.short_url # -> http://s.4ye.me/8szyc5

su.long_url # -> 如果数据库找到对应长网址,返回长网址 http://oppia.4ye.me/
su.long_url # -> 如果数据库找不到对应长网址,返回 nil

web 服务

提供一个能够访问的 web 界面,部署在 s.4ye.me。 此 web 界面能够输入网址,调用 parse 方法,把返回的 long_url 和 short_url 显示出来。

工程地址

https://github.com/mindpin/short-url

⚠️ **GitHub.com Fallback** ⚠️