第九课: 基于auxm+diesel+mysql开发短链服务

Posted by JoshSu Blog on September 25, 2021

大家好, 欢迎大家来参加本次公开课.

今天的公开课主要是偏实战的公开课, 基于auxm+diesel+mysql开发短链服务.

公开课正式开始前首先我来简单的介绍一下自己.

我叫苏林, 是一名从事于互联网研发的程序员, 也是一名技术爱好者, 在互联网行业有十余年, 先后效力于电商、SaaS领域, 对底层系统级开发比较感兴趣, 也才促使我学习和探索Rust语言.

现在开始今天正式的公开课, 今天的公开课按以下几部份来进行分享.

1、项目背景: 什么是短地址服务.

2、项目要实现的API接口介绍 => 因为高性能Http Server离不开Tokio, 需要借助于异步框架Tokio来构建.

3、接口开发. => 通过带领大家实操来实现一个简单版的Http Server, 了解Http Server的本质是什么?

什么是短地址

故名思义, 短地址服务就是将长地址缩短到一个很短的地址, 用户访问这个短地址可以重定向到原本的长地址. 我们经常可以在微博或者twitter上面看到这样的短地址.

在下面这条推文中, 我们看到了这样的短地址, 当用户点击这个短地址时, 就会重新定向为之前的长地址.

项目要实现的API接口.

这里需要实现3个API接口.

第一个是shorten接口, 它表示把一个长地址转化为一个长地址.

第二个是info接口, 它表示得到一个短地址的详细信息.

第三个是重定向接口, 当用户点击这个短地址时, 它重定向到之前的长地址, 并且返回302 code. 为什么是302 code, 后面我会详细解释.

首先, 第一个shorten接口, 它是post接口, 是创建, 来看一下它的参数. 第一个是url, 表示要转化的长地址, 第二个是过期时间, 这里用分钟表示, 设置为0的时候是表示永久不过期, 为什么这里需要过期时间, 因为用户是不希望这个地址是永久有效的. 响应就返回shortlink短地址.

下面一个是getinfo的接口, 参数就是我们的短地址, 返回结构我们看到有三个, 第一个是短地址对应的长地址, 第二个是短地址创建时间, 第三个是短地址的过期时间. 过期时间用分钟来表示.

最后一个我们看一下redirect重定向接口, 这就是重定向接口, 当用户点击这个短地址, 会重新跳转到之前的长地址, 这里我们返回了302, 表示是一个临时重定向, 为什么不用301, 因为301会永久的保存在用户的缓存中, 这样我们就不能跟踪用户的形为, 所以我们这里用302.