如何使用ASP.NET Core Web API实现短链接服务

前言

在前面的文章中,我们介绍了hashids.net,可以将数值型Id加密成无意义的字符串。

今天,我们来利用这一特点,实现短链接服务。

原理

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

  • zhiurl.cn/erbDjM

但是访问这个地址,实际会打开我的公众号。

监控网络请求,发现实际发生的是302临时重定向。

562e61f7848db57bb518606263d1ab00.png

因此,可以猜测整个短链接服务的实现原理如下:

  1. 用户访问短链接,请求到达服务器;

  2. 服务器将短链接转换成为长链接,然后给浏览器返回重定向的状态码302;

  3. 浏览器拿到重定向的状态码,以及真正需要访问的地址,重定向到真正的长链接上。

实现

创建一个Web API项目,用于实现短链接服务。

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

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

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

5c049fc0791635554bd27f0ee7f43dab.png

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

[HttpGet("{shortUrl}")]
public IActionResult GetUrl(string shortUrl)
{
    var hashids = new Hashids("公众号My IO", minHashLength: 6);
    var id = hashids.Decode(shortUrl)[0];
        
    var urlData = db.Get(id);

    return Redirect(urlData.Url);
}

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

e5590331e9bf8995705aea9512d307ed.png

结论

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

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值