<span>根据业务绘制流程图(dag,有向无环图)。看看缺少哪些功能,直接设计功能,主要是输入输出参数</span><strong>短链接url跳转</strong><span>,根据输入输出参数编写逻辑。</span>
讯享网
讯享网<span><br />
dag图片可用,请参考这里:
讯享网<br />
这时候可以根据dag图做一些数据结构设计和函数设计。
讯享网<br />
前端的作用,
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.功能一:收集长链接,生成短链接
讯享网<br />
dag过程:收集长网址,并确认长网址有效。如果有效,则生成短 URL 并将其传递给后端服务器。
讯享网<br />
1.收集长URL:通过在index.html中设计一个表单,客户输入表单后,使用requests.form方法获取表单内容。
讯享网<br />
2.检查长URL是否有效:通过checkurl(longurl)函数,当longurl有效时返回1<strong>短链接url跳转</strong>,否则返回0。
讯享网<br />
3.生成短网址:createshorturl(longurl) 函数。
讯享网<br />
4.参数函数:linkshort_long(shorturl,longurl)
讯享网<br />
将长短链比较信息做成字典,将字典转换成json字段。
讯享网<br />
restapi方法将相关信息传输到后端:requests.post("URL", json=post_data)
讯享网<br />
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:
<br />
讯享网dag流程:收集短网址,如果短网址存在,则接收服务器的重定向请求,跳转到短网址对应的长网址链接。
<br />
讯享网2-1 收集短url:通过在index.html中设计一个表单,客户输入表单后,使用requests.form方法获取表单内容
<br />
讯享网2-2 检查短url是否存在:通过checksurl(shorturl)函数,短url有效时返回1,否则返回0(服务器)
<br />
讯享网<img src="https://c1.stcfile.com/article/500_23897.jpg" />
<br />
讯享网2-3 跳转到长URL:通过jumpurl(shorturl)函数向服务器请求。服务器首先判断短网址是否存在,如果存在则重定向。
<br />
讯享网Jumpurl 功能设计:
<br />
讯享网1.访问后端服务器,requests.post(url/api/jump,""),后端服务器根据URL的具体api返回信息,返回值包含网址信息
<br />
讯享网2.服务端应该构造返回的Header值,让客户端浏览器根据Location参数跳转到对应的长链URL
<br />
讯享网def checksurl(shorturl): #检查shorturl 是否在后台服务中存在, #后台判断是否存在,如果存在则返回确认 #如果存在则返回值为真,否则为假 return result def jumpurl(shorturl): #发数据到服务端, #服务端判断短链是否存在 #如果存在则返回 redirect header,做301 #同时服务端做一个记录。
讯享网前端设计3:
3.功能3:请求短链的访问信息并显示:
讯享网<br />
dag过程:收集短网址对应的信息优化的解决方案:57 个挑战中的 54 个,实现一个 url 跳转服务(三),如果存在短网址,返回短网址被发送的次数等信息
讯享网<br />
3-1 在步骤2-3中,每次服务器指定要跳转的后端,记录短URL被访问的时间。
讯享网<br />
#根据请求,做相关展示逻辑。 @app.route(‘/shorturl/stats’) def route_statics(): #从requests 里面获取shorturl的信息 #post到服务端,收集访问信息 #从服务端获取返回数值字典 #用返回字典做展示,跳到一个单独的页面,用render_template模版。 return dict
讯享网
服务器操作:
讯享网每次访问短链,做一次访问统计:
<br />
讯享网3-1-1:{short url: access time}存储在redis的另一个表中。
<br />
讯享网3-2-2:对之前的数据结构进行更新,主要是更新shorturl的值,增加一行访问时间。
<br />
讯享网3-2 发起请求,传递request.post()函数,传递参数/api/statics到后端
<br />
讯享网收集后端返回的json字符串,查询时间,短url<strong>短链接在线生成</strong>,以及该url的访问列表,{date:[list],"shorturl",url, visittime:[list]}。
<br />
讯享网使用json.loads()获取信息,然后收集visittime信息
<br />
讯享网根据天的维度制作访问时间的图像。 ---操作
<br />
讯享网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被访问的情况。
<br />
讯享网表 2
键:值
讯享网长网址:短网址
主要用于查询对应的longurl是否存在。将其用作 Key 更容易。
讯享网先写到这里,感觉还是挺复杂的,不过经过上面的分析,其实大体的程序框架就准备好了。
<br />
讯享网<span style="color:#;font-family:sans-serif;font-size:16px;">以上就是关于《</span><strong>功能详解:实现短链接url跳转服务</strong><span style="color:#;font-family:sans-serif;font-size:16px;">》的全部内容了,感兴趣的话可以点击右侧直接使用哦!》》</span>在线短链接生成<span style="color:#;font-family:sans-serif;font-size:16px;">器</span>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/201391.html