『SuperShortLink』.NET开源的超级短链系统——快速实现长短链的转换及监控-LMLPHP
📣读完这篇文章里你能收获到

  • 了解开源短链项目SuperShortLink
  • 学习长链转短链、短链跳转长链、短链访问统计的原理及方法
  • 掌握内部其他项目的多种接入方式

『SuperShortLink』.NET开源的超级短链系统——快速实现长短链的转换及监控-LMLPHP

『SuperShortLink』.NET开源的超级短链系统——快速实现长短链的转换及监控-LMLPHP

一、SuperShortLink

1. 源码地址

2. 功能介绍

  • 基于.NET 6开发的后端及Web管理界面
  • 支持自定义短链长度
  • 支持在线短链生成及跳转长链
  • 支持实时统计短链访问次数
  • 支持多种持久化方式:MySQL/PostgreSQL/SqlServer(2012及以上)
  • 傻瓜式配置,开箱即用

3. 架构设计文档

『SuperShortLink』.NET开源的超级短链系统——快速实现长短链的转换及监控-LMLPHP

二、构建运行项目

1. 运行项目

Step 1 : 打开项目
通过VisualStudio打开 SuperShortLink.sln

Step 2 : 配置数据库

  • 可选:MySQL/PostgreSQL/SqlServer(2012及以上)
  • appsetting.json文件中更新连接字符串
"ShortLink": {
    "Secrect": "vZCN8VhSge13UQrYjBTwKulWqsIOAocL0DkmRdxPMJf5tiHbn72z69aXpGyFE4",// 随机打乱的Base62编码
    "CodeLength": 6, //短链长度
    "DbType": "PostgreSQL", //DatabaseType:MySQL/PostgreSQL/SqlServer(仅支持SQL Server2012及以上)
    "ConnectionString": "Server=127.0.0.1;Port=5432;User Id=uid;Password=pwd;Database=test_db;",//数据库链接字符串
    "LoginAcount": "admin",   //登陆账号
    "LoginPassword": "123456" //登陆密码
}

Step 3 : 执行数据库建表SQL 建表SQL语句

Step 4 : 运行项目

  • 登陆管理后台:{域名}/home/index
  • 默认登陆账号密码:admin 123456

2. 配置更新

  • 修改账号密码:更新appsetting.json的LoginAcount及LoginPassword
  • 修改随机秘钥:可直接运行测试用例随机生成新秘钥:ShortLinkTest/Generate_Key_Be_Valid,然后更新appsetting.json的Secrect

『SuperShortLink』.NET开源的超级短链系统——快速实现长短链的转换及监控-LMLPHP

三、项目接入

1. 通过API扩展类库接入(推荐)

Step 1 : 安装包,通过Nuget安装包

Install-Package Pandora.ShortLink.Api

Step 2 : 配置 Startup 启动类

public class Startup
{
    //...
    
    public void ConfigureServices(IServiceCollection services)
    {
        //configuration
        services.AddShortLinkApi(option =>
        {
            option.ApiDomain = "短链服务域名";
            option.AppSecret = "应用秘钥";
            option.AppCode = "应用Code";
        });
    }    
}

Step 3 : IShortLinkApiService服务接口使用

[Route("api/[controller]/[Action]")]
public class ShortLinkController : Controller
{
    private readonly IShortLinkApiService _apiService;
    public ShortLinkController(IShortLinkApiService apiService)
    {
        _apiService = apiService;
    }

    /// <summary>
    /// 解析生成短网址
    /// </summary>
    /// <param name="url">长链接</param>
    /// <returns></returns>
    [HttpPost]
    public async Task<string> Generate(string url)
    {
        var short_url = await _apiService.GenerateAsync(url);
        return short_url;
    }
}

2. 通过Core扩展类库接入

Step 1 : 安装包,通过Nuget安装包

Install-Package Pandora.ShortLink.Core

Step 2 : 配置 Startup 启动类

public class Startup
{
    //...
    
    public void ConfigureServices(IServiceCollection services)
    {
        //configuration
        services.AddShortLink(option =>
        {
            option.ConnectionString = "数据库链接";
            option.DbType = "数据库类型";//可选:DatabaseType.PostgreSQL/MySQL/SqlServer
            option.Secrect = "打乱后的Base62编码",
            option.CodeLength = "短链长度";
        });
    }    
}

Step 3 : IShortLinkService服务接口使用

[Route("api/[controller]/[Action]")]
public class ShortLinkController : Controller
{
    private readonly IShortLinkService _shortLinkService;
    public ShortLinkController(IShortLinkService shortLinkService)
    {
        _shortLinkService = shortLinkService;
    }

    /// <summary>
    /// 解析生成短网址
    /// </summary>
    /// <param name="url">长链接</param>
    /// <returns></returns>
    [HttpPost]
    public async Task<string> Generate(string url)
    {
        var short_url = await _shortLinkService.GenerateAsync(url);
        return short_url;
    }
}
04-20 17:19