• 短网址服务


    短网址源于Twitter中140个字符的限制,有时候一个长网址就占了100个字符,所以需要一个服务将长网址转化为短网址,比如百度短网址服务。

    通常短网址服务需要两个接口:

    • 生成短网址
    • 根据短网址查询长网址

    当直接访问短网址时,短网址服务器返回一个302和真实网址,然后浏览器会再去访问长网址

    生成短网址

    短网址可以类比DNS,也是内部维护了一套对应关系然后提供访问:

    短网址设计关键点在于后缀token的算法,这里给出一种:

    CHARS = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789"
    

    我们将token认为是一个64进制的数,那8位64进制的数完全可以满足短网址申请的数量且不重复。

    基本过程如下:

    long_url -> redis.incr(index) -> 10_to_64(index) -> token
    

    当然10_to_64返回的是一个字符串而不是真正的数字,基本实现如下:

    def 10_to_64(num):
        if num == 0:
            return CHARS[0]
        res = []
        while num:
            num, rem = divmod(num, len(CHARS))
            res.append(CHARS[rem])
        return ''.join(reversed(res))
    

    获取到token后只要和URL一起存入数据库即可

    根据短网址查询长网址

    查询时从短网址中解析出token然后查询数据库即可,基本过程如下:

    short_url -> token = parse(short_url) -> select url from database where token=`token` -> url
    
  • 相关阅读:
    5、axios获取后端数据
    token
    转载:requestAnimationFrame
    YII的特殊删除语句组装
    c /c++ 工程写法 linux makefile多文件编译 原理
    c 语言函数传参的sizeof问题
    使用mermaid语言定制甘特图,Typora/语雀都支持
    Nginx 配置文件
    Docker Compose(7)
    Docker网络模式详解及容器间网络通信(6)
  • 原文地址:https://www.cnblogs.com/Peter2014/p/11627932.html
Copyright © 2020-2023  润新知