介绍

  • 短链接,顾名思义就是在形式上比较短的链接网址。借助短链接,可以用简短的网址替代原来冗长的网址

  • 例如下例:

    • zhiurl.cn/erbDjM
    • 但是访问这个地址,实际会打开我的公众号。
    • 监控网络请求,发现实际发生的是302临时重定向。

短链接 - 图1

实现原理:

  • 用户访问短链接,请求到达服务器;
  • 服务器将短链接转换成为长链接,然后给浏览器返回重定向的状态码302;
  • 浏览器拿到重定向的状态码,以及真正需要访问的地址,重定向到真正的长链接上。

实现

首先,实现生成短链接接口

  1. [HttpPost("shorten")]
  2. public string ShortenUrl([FromBody]string url)
  3. {
  4. var id = db.Insert(url);
  5. var hashids = new Hashids("公众号My IO", minHashLength: 6);
  6. return hashids.Encode(id);
  7. }

将长链接保存到数据库,然后将数据Id加密成字符串返回

短链接 - 图2

然后,实现短链接跳转接口

  1. [HttpGet("{shortUrl}")]
  2. public IActionResult GetUrl(string shortUrl)
  3. {
  4. var hashids = new Hashids("公众号My IO", minHashLength: 6);
  5. var id = hashids.Decode(shortUrl)[0];
  6. var urlData = db.Get(id);
  7. return Redirect(urlData.Url);
  8. }

将短链接解码成数据Id,然后到数据库查到对应长链接。最后返回跳转状态码

短链接 - 图3

总结

  • 在本文中,通过hashids.net,我们使用ASP.NET Core Web API实现了短链接服务