专业的短链接生成工具
链接域名
短网址有效期
功能详解:实现短链接url跳转服务
更新时间:2025-5-2 11:52:07 作者:爱短链
根据业务绘制流程图(dag,有向无环图)。看看缺少哪些功能,直接设计功能,主要是输入输出参数短链接url跳转,根据输入输出参数编写逻辑。
dag图片可用,请参考这里:
这时候可以根据dag图做一些数据结构设计和函数设计。
前端的作用, --------------------------------------------------------------------------------------- 1.功能1:收集长链接并生成短链接 dag流程:收集长URL,并确认长URL有效,如果有效则生成短URL,并传递到后端服务器。 1-1 收集长URL: 通过在index.html 中设计一个表单,客户输入表单后,用requests.form 方法获取表单内容 1-2 检查长URL是否有效:通过checkurl(longurl)函数,当longurl 有效则返回1,否则返回0 1-3 生成短URL:通过createshorturl(longurl)函数,从长url里面截取字段另外加上时间来生成一个短url 1-4 传递到后端服务器:把长短URL的关系记录到后端 具体实现可以通过requests.post 方法,向对应的restful api 进行请求(备注1),传递jason字段(备注2) 备注1:这里指post 的url,指requsts.post 请求对应的Url,建议post的url要详细到具体的接口,比如127.0.0.1:8008/api/shorturlcreate 接口,这样后端服务器可以根据接口特性来进行相应的逻辑处理 备注2:制作字典,按照 dic1= {短链:{"长链":长链,"访问日期":"null","创建日期":date}} 创建 另外,requests.post 方式,选择data=json 方式传递,json字段是对备注2里字典信息做字符串序列化的结果 json.dumps(dic1)
2.功能2:收集短链接做相关跳转 dag流程:收集短url,如果短url存在,则接收服务端的redirect请求,跳转到短URL对应的长URL链接上。 2-1 收集短url:通过在index.html设计一个表单,客户输入表单后,用requests.form方法获取表单内容 2-2 检查短url是否存在:通过checksurl(shorturl)函数,当shorturl有效则返回1,否则返回0 (服务端) 2-3 跳转到长URL:通过jumpurl(shorturl)函数,请求到服务端。服务端先判断短URL是否存在,如果存在则做redirect。 jumpurl函数设计: 1.访问到后端服务器,requests.post(url/api/jump,""), 后端服务器根据URL具体的api来返回信息,返回值里包含了URL信息 2.服务端要构造返回的Header值,根据Location 参数 ,让客户浏览器跳转到对应的长链URL中
3.功能3:请求某个短链的访问信息,并进行展示: dag流程:收集短url 对应的信息,如果短URL存在,则返回这个短URL被调度的次数等信息 3-1 在第2-3步,每次服务端指定后端做跳转的时候,把短URL被访问的时间做一个记录。 服务端操作: 每次访问短链的时候,对访问情况做个统计: 3-1-1: {短url:访问时间} 存入redis 另外一个表里。 3-2-2:对之前的 数据结构做个更新,主要是对 shorturl 的value做个update,访问时间增加一行。 3-2 发起请求,通过requests.post() 函数,传参数为 /api/statics ,到后端 收集后端返回的json字符串,查询时间,短url,以及这个url的访问列表,{date:[list],"shorturl",url, visittime:[list]}。 用json.loads() 把信息拿到,然后收集visittime的信息, 按照天的维度对visittime做一个图像化。---作业。 redis 数据结构设计: key:value shorturl:{"对应的长链接":longurl,"访问时间":[visitdate1,visitdate2],"创建时间":createdate} 把短链做为Key,把长链的信息、访问时间,创建时间作为value, ---------------------------------------------------------------------------------------
前端设计一:
1.功能一:收集长链接,生成短链接
dag过程:收集长网址,并确认长网址有效。如果有效,则生成短 URL 并将其传递给后端服务器。
1.收集长URL:通过在index.html中设计一个表单,客户输入表单后,使用requests.form方法获取表单内容。
2.检查长URL是否有效:通过checkurl(longurl)函数,当longurl有效时返回1短链接url跳转,否则返回0。
3.生成短网址:createshorturl(longurl) 函数。
4.参数函数:linkshort_long(shorturl,longurl)
将长短链比较信息做成字典,将字典转换成json字段。
restapi方法将相关信息传输到后端:requests.post("URL", json=post_data)
def checkurl(longurl): #判断longurl 是否可以访问 #如果是有效的,返回头为200,则返回1 #如果长连接无效,返回头为200 之外的,则返回0 return result def createshorturl(longurl): #头几个字符基于时间-年月日时 #后几个字符取长链的前几个字段 return shorturl def linkshort_long(shorturl,longurl):#生成一个json字段,并作为post逻辑的输入。 #后续这个字典被Json化后传入到服务器后端,后端程序基于short url 及 createtype 可以做插入redis的操作。 dic = {"shorturl":shorturl,"date":date,"longurl":longurl,"createtype":"build"} return dic
前端设计2:
dag流程:收集短网址,如果短网址存在,则接收服务器的重定向请求,跳转到短网址对应的长网址链接。
2-1 收集短url:通过在index.html中设计一个表单,客户输入表单后,使用requests.form方法获取表单内容
2-2 检查短url是否存在:通过checksurl(shorturl)函数,短url有效时返回1,否则返回0(服务器)
2-3 跳转到长URL:通过jumpurl(shorturl)函数向服务器请求。服务器首先判断短网址是否存在,如果存在则重定向。
Jumpurl 功能设计:
1.访问后端服务器,requests.post(url/api/jump,""),后端服务器根据URL的具体api返回信息,返回值包含网址信息
2.服务端应该构造返回的Header值,让客户端浏览器根据Location参数跳转到对应的长链URL
def checksurl(shorturl): #检查shorturl 是否在后台服务中存在, #后台判断是否存在,如果存在则返回确认 #如果存在则返回值为真,否则为假 return result def jumpurl(shorturl): #发数据到服务端, #服务端判断短链是否存在 #如果存在则返回 redirect header,做301 #同时服务端做一个记录。
前端设计3:
3.功能3:请求短链的访问信息并显示:
dag过程:收集短网址对应的信息优化的解决方案:57 个挑战中的 54 个,实现一个 url 跳转服务(三),如果存在短网址,返回短网址被发送的次数等信息
3-1 在步骤2-3中,每次服务器指定要跳转的后端,记录短URL被访问的时间。
#根据请求,做相关展示逻辑。 @app.route('/shorturl/stats') def route_statics(): #从requests 里面获取shorturl的信息 #post到服务端,收集访问信息 #从服务端获取返回数值字典 #用返回字典做展示,跳到一个单独的页面,用render_template模版。 return dict
服务器操作:
每次访问短链,做一次访问统计:
3-1-1:{short url: access time}存储在redis的另一个表中。
3-2-2:对之前的数据结构进行更新,主要是更新shorturl的值,增加一行访问时间。
3-2 发起请求,传递request.post()函数,传递参数/api/statics到后端
收集后端返回的json字符串,查询时间,短url短链接在线生成,以及该url的访问列表,{date:[list],"shorturl",url, visittime:[list]}。
使用json.loads()获取信息,然后收集visittime信息
根据天的维度制作访问时间的图像。 ---操作
def check_ifexist(longurl): # 检查长链接是否存在,如果存在则跳过 def record_check(dic1): #收集长短链的链接请求,如果是访问/api/record 则进入逻辑 #把字典信息直接写redis(), #redis插入,主要插入短链(key)及短链的对应信息表结构(value),另外针对长链接是否存在的表结构(key为长链接,value为1) def record_route(shorturl): #收集route请求,如果访问的是/api/route ,则进入逻辑 #查询短链对应的长链接 #返回header指定location 为长链接 #通过update redis表,记录这次访问,
Redis 数据结构设计:
表 1:
键:值
shorturl:{"对应长链接":longurl,"访问时间":[visitdate1,visitdate2],"创建时间":createdate} 以短链接为key,创建长链接的信息和访问时间链接时间作为值。
这样设计表结构的作用是可以查看每次访问的访问时间,方便查看shorturl被访问的情况。
表 2
键:值
长网址:短网址
主要用于查询对应的longurl是否存在。将其用作 Key 更容易。
先写到这里,感觉还是挺复杂的,不过经过上面的分析,其实大体的程序框架就准备好了。
以上就是关于《功能详解:实现短链接url跳转服务》的全部内容了,感兴趣的话可以点击右侧直接使用哦!》》在线短链接生成器