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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ASP.NET Core Web API实现短链接服务相关的知识,希望对你有一定的参考价值。

前言

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

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

原理

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

  • zhiurl.cn/erbDjM

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

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

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

  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加密成字符串返回。

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

[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,然后到数据库查到对应长链接。最后返回跳转状态码。

结论

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

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

以上是关于如何使用ASP.NET Core Web API实现短链接服务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?

如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?

如何使用 Postman 使用 cookie 身份验证测试 ASP.NET Core Web API?

如何使用 Web Api Asp.Net Core 实现基于声明的授权?

带有 EF Core 更新实体的 ASP.Net 核心 Web Api 如何

如何使用asp .net core web api发送连续的数据流?