我的客户拥有超过400,000名客户的数据库。为每个客户分配一个GUID。他希望我选择所有记录,创建一个动态“短URL”,其中包含此GUID作为参数。然后将此短网址保存到每个客户记录的字段中。
我的第一个问题是,是否有任何网址缩短网站允许您以这种方式编程创建短网址?
答案 0 :(得分:2)
TinyUrl允许你这样做(没有广泛记录),例如:
http://tinyurl.com/api-create.php?url=http://www.stackoverflow.com/
所以你可以拥有
http://tinyurl.com/api-create.php?url=http://mysite.com/user/xxxx-xxxx-xxxx-xxxx
guid最终没有那么明确,但URL应该是唯一的
请注意,您必须通过HTTPWebRequest传递此信息并获取响应。
答案 1 :(得分:1)
您可以使用Google的网址缩短版,它们有API。
以下是文档:http://code.google.com/apis/urlshortener/v1/getting_started.html
答案 2 :(得分:1)
此网址不够短:?
http://www.clientsdomain.com/?customer=267E7DDD-8D01-4F38-A3D8-DCBAA2179609
注意:我个人认为你的客户要求一些奇怪的东西。通过要求您在每个客户记录上创建一个URL字段(通过确定性算法将基于客户的GUID),他实际上主要是要求您对数据库进行非规范化。
答案 3 :(得分:1)
网站缩短网站使用的算法非常简单:
第二步只使用六个小写字母将为您提供当前应用程序所需的更多(24 ^ 6)组合,并且没有什么能阻止在某个时间点使用更大的序列。如果允许使用数字和/或大写字母,则可以使用较短的序列。
转换算法是基本转换(如转换为十六进制时),任何符号代表零填充。这是转换的一些Python代码:
LOWER = [chr(x + ord('a')) for x in range(25)]
DIGITS = [chr(x + ord('0')) for x in range(10)]
MAP = DIGITS + LOWER
def i2text(i, l):
n = len(MAP)
result = ''
while i != 0:
c = i % n
result += MAP[c]
i //= n
padding = MAP[0]*l
return (padding+result)[-l:]
print i2text(0,4)
print i2text(1,4)
print i2text(12,4)
print i2text(36,4)
print i2text(400000,4)
print i2text(1600000,4)
结果:
0000
0001
000c
0011
kib9
4b21