范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

57挑战之54,实现一个url跳转服务(七)客户服务端联调1

  上要求:
  上代码:
  客户端:"""前端的作用, --------------------------------------------------------------------------------------- 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做一个图像化。---作业。  """   from flask import Flask,render_template,request,url_for,redirect from datetime import date import requests import json import time  def check_if_valid(longurl):     #检查长链接是否有效,这里mock一下     result = 1     return result  def check_exist_url(longurl):     #检查长链接是否在服务端存在,mock一下     result = 0     return result  def post(url,notes):     #模拟postman,传递数据到服务端。     print("deliver notes to serverside")     return 1  def create_shorturl(longurl):     #返回shorturl     return "/baidu"  def check_shorturl_if_exist(shorturl):     return 0  app = Flask(__name__) @app.route("/",methods=["GET","POST"]) def index():     if request.method == "POST": #根据post 表单获取的内容做相关判断        longurl = request.form["longurl"]        shorturl = request.form["shorturl"]        print("longurl is {0}, shorturl is {1}".format(longurl,shorturl))        if longurl is not None: #当longurl 非空            if check_if_valid(longurl) == 1 and check_exist_url(longurl) == 0: #当longurl 可用,且longurl在服务端不存在                shorturl = create_shorturl(longurl)                notes = {"shorturl": shorturl, "longurl": longurl}                url = "http://127.0.0.1:8008/api/shorturlcreate"                post(url, notes)            else: #否则条件没达到,通知失败                notes = "the longurl is not exist or it"s already at serverside"                return render_template("display.html", info=notes)         if shorturl is not None: #当shorturl 非空,执行第二个逻辑            if check_shorturl_if_exist(shorturl) == 1:# 如果短url在服务端存在,则做跳转等逻辑               url = "http://127.0.0.1:8008/api/shorturljump"               post(url, notes)               print("jump success")               return render_template("display.html",info="jump success")            else:               notes = "the shorturl is not exist"               return render_template("display.html", info=notes)      else:        return render_template("index2.html")  @app.route("/api/static",methods=["GET","POST"]) def get_static():     print("The site info is displayed")     return render_template("display.html", info="The site info is displayed")   if __name__ == "__main__":     app.run(host="0.0.0.0",port=80,debug = True)
  服务端:"""前端的作用, --------------------------------------------------------------------------------------- 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做一个图像化。---作业。  """   from flask import Flask,render_template,request,url_for,redirect from datetime import date import requests import json import time  def check_if_valid(longurl):     #检查长链接是否有效,这里mock一下     print("----come to function--- check_if_valid(longurl)")     try:         r = requests.get("https://"+longurl)         statuscode = r.status_code         if statuscode == 200 or statuscode == 301:             print("The site is reachable on internet")             result = 1         else:             result = 0      except:         result = 0      return result  def check_if_exist_url(longurl):     print("----come to function--- check_if_exist_url(longurl)")     #检查长链接是否在服务端存在,mock一下     print("Process: check if the longurl {0} is exist at serverside redis storage".format(longurl))     r = requests.post("http://127.0.0.1:8008/api/checkurl", json={"longurl": longurl})     textjson = r.json()     print("get the return info from the serverside {0}".format(longurl))     print(textjson)     print("get the type info of the serverside")     print(type(textjson))     print("Get the longurl ")     print(textjson["longurl"])     #print(dic2["longurl"])     result = textjson["result"]     return result  def post_shorturlcreate(shorturl,longurl):     #模拟postman,传递数据到服务端。     print("----come to function--- post_shorturlcreate(shorturl,longurl)")     print("Process: to deliver create link to serverside redis storage")     r = requests.post("http://127.0.0.1:8008/api/shorturlcreate",json={"shorturl":shorturl,"longurl":longurl})     print("get info from serverside  "+ r.text)     return 1  def post_shorturljump(shorturl):     print("----come to function--- post_shorturljump(shorturl)")     print("Process: jump to shorturl")     r = requests.post("http://127.0.0.1:8008/api/shorturljump", json={"shorturl": shorturl})     print("get info from serverside  " + r.text)     return r  def create_shorturl(longurl):     print("----come to function--- create_shorturl(longurl)")     print("Process: to create shorturl from longurl")     #返回shorturl     shorturl = "/"+longurl.split(".")[1]     print("Process:The short url is "+shorturl)     return shorturl  def check_shorturl_if_exist(shorturl):     print("----come to function--- check_shorturl_if_exist()")     print("Process: check if the shorturl {0} is exist at serverside redis storage".format(shorturl))     r = requests.post("http://127.0.0.1:8008/api/checkshorturl", json={"shorturl": shorturl})     textjson = r.json()     print("Print the info return from serverside,this is the info")     print(textjson)     print("Chcek the type of the info")     print(type(textjson))     print("Check the mapping(longurl) of the shorturl {0}".format(shorturl))     print(textjson["shorturl"])     # print(dic2["longurl"])     result = textjson["result"]     return result  app = Flask(__name__) @app.route("/",methods=["GET","POST"]) def index():     if request.method == "POST": #根据post 表单获取的内容做相关判断        longurl = request.form["longurl"]        shorturl = request.form["shorturl"]         print("longurl is {0}, shorturl is {1}".format(longurl,shorturl))        if longurl is not None and shorturl == "empty": #当longurl 非空            if check_if_valid(longurl) == 1 and check_if_exist_url(longurl) == 0: #当longurl 可用,且longurl在服务端不存在                shorturl = create_shorturl(longurl)                post_shorturlcreate(shorturl, longurl)            else: #否则条件没达到,通知失败                notes = "the longurl is not exist or it"s already at serverside"                return render_template("display.html", info=notes)         if shorturl is not None and longurl == "empty": #当shorturl 非空,执行第二个逻辑            print("进入第二个逻辑")            shorturl ="/" + shorturl            if check_shorturl_if_exist(shorturl) == 1:# 如果短url在服务端存在,则做跳转等逻辑               r = post_shorturljump(shorturl)               print(r.json())               print(type(r.json()))               longurl = r.json()["longurl"]               print(longurl)               return redirect("https://" + longurl)            else:               notes = "the shorturl is not exist"               return render_template("display.html", info=notes)      else:        return render_template("index5.html")  @app.route("/api/static",methods=["GET","POST"]) def get_static():     print("The site info is displayed")     return render_template("display.html", info="The site info is displayed")   if __name__ == "__main__":     app.run(host="0.0.0.0",port=80,debug = True)
  index5.html              57-54        
  display.html             57-53    {{info}}   
  前端
  键入www.qq.com
  点击记录
  实现了插入逻辑:
  插入逻辑前端日志:
  插入逻辑后端日志:
  查看数据库:
  跳转前逻辑:
  键入qq,点击跳转
  跳转后:
  前端日志:
  后端日志:
  看访问做了跳转302,
  update后,跳转时间做了记录

差价4000多,iPhone14Pro在拍照上能碾压国产?实拍效果说了算要说这几年内智能手机内卷最激烈的领域,无疑会是在影像方面。不过与此同时,人们普遍认为手机的价格越高拍出来的照片效果就会越好。难道喜欢拍照的用户就必须得买价格更高的手机?今天我就拿来传承百年的西班牙润唇膏,一抹拥有蜜桃唇丨种草机140多年坚持只做一件事,是什么样的体验?或许可以问问,来自西班牙的唇膏专业户DERMOSUAVINA1880(舒雅维娜)。即使包装已从最初的小木盒金属盒,演变成了如今的环保小盒,2023年流行色口红,开启你的非凡之年直到看到2023年PANTONE发布的流行色,大美才恍然大悟,原来那个飘在热搜上的肖战火龙果色西装,就是非凡洋红色。肖战红毯造型GUCCIWoolJacket每年12月感觉大家都在国货高端品牌郑明明御龄奢宠系列效果如何?女人最大的天敌,是年龄!一过25岁,女人肌肤的衰老就像一颗苹果,从第一条细纹的产生开始,到肌肤松弛,最终变成整脸垮掉的黄脸婆!肌肤状态由盛转衰属于正常现象。有针对性地对皮肤做一些护许仙叶童太真实,不染发不涂口红,演戏认真,穿搭却随意魅力的眼睛能发现他人身上的美德,美丽的嘴唇智慧说出善言,美丽的额姿态能与知识并行,晚年惟好静,万事不关心。岁月从不败美人,即使是古稀之人,老人并不是缺少美,而是我们缺少发现的眼睛,不精修的红毯真好看!治好了我的容貌焦虑话说,第80届金球奖昨晚在洛杉矶举行。作为奥斯卡的前哨战,自然来了很多明星。不仅穿搭风格百花齐放,而且没有酒店出发图精修图,全是红毯生图,让人看了大呼过瘾。我们这就来看看。杨紫琼本粉丝们珍藏的压箱底珠宝有点震撼,经典款好搭配头号有新人贵粉晒宝贵粉们珍藏的压箱底珠宝们!实在有点震撼!相信对爱珠宝的女孩来说,买珠宝的过程是一步步在成长和变化的。可能一开始大家入手的都是不过时好搭配的经典款。但随着珠宝越看越过年的第一身穿搭,就学她这样穿!如何平衡长相年纪和气质之间的关系,其实是一个穿搭界的重磅难题。我们通常会在网络上或者是大街上看到这样一类女人她们的年纪成熟气质稳重但是身上的衣服却是穿得活泼又甜美,这样的造型整体看艳压唐顿点亮盖茨比舞会,一片羽毛竟能称霸珠宝史?年末将至,节庆的气息似乎又随着12月的到来悄悄蔓延,对于接踵而至的小聚或舞宴是否还没有头绪?今天,不妨就让我们回到浪漫的20世纪初,听两位时髦佳人告诉你艳压群芳的制胜秘诀。夜幕降临杨幂时装开年刊封面,大麻花辫精致又随性,撞衫李宇春比腿长时尚女王杨幂又入一本开年刊,登上时装LOFFICIEL一月刊封面。这是杨幂第七度登封时装,连续三年坐镇开年刊,时尚资源令人艳羡。开年大片主题是常如新,且尽兴。杨幂一面是洒脱慵懒的卷日本植村秀琥珀卸妆油,1秒乳化,3秒溶妆!卸妆绝对是清洁肌肤中最重要的一步了,如果卸妆不彻底,所有的护肤都白搭!不认真卸妆,这些垃圾就会堵塞在毛孔里面,很多人的毛孔粗大粉刺黑头就是这么来的不卸妆或者敷衍的卸妆,真的会毁脸!
独行月球看懂被留下的金刚袋鼠,就懂得这部电影背后深层意义文竹英在独行月球这部电影中,除了沈腾饰演的独孤月被遗忘在月球上之外,还有一个被月盾计划的人遗忘的生物,就是电影中让人印象深刻的金刚袋鼠,名字叫刚子。原本被遗忘的只有独孤月一个人,为浪姐成团夜,张天爱高人气出道,几个舞台涨粉无数,不愧是门面昨天是乘风破浪的姐姐3成团夜,从五月初开始,8月初结束,三个月时间带给了大家惊艳与悸动,勾起了许多人对曾经的美好回忆。这一次的成团不是结束,对更多的人来说是一个身体和心灵的全新开始三重底经历了56。88的跌幅,当有机会获利时,千万不要畏缩不前充分释放风险压力后,当前只有5。93元,每股净资产却高达7。15元,且呈阳线放量阴线缩量态势,说明有资金开始关注,具备变盘的特征。三重底形态图我们经常都会说事不过三,在大盘和股票长正式离队!辽宁男篮老臣走人,被杨鸣放弃,告别CBA赛场最近一段时间,辽宁男篮有些不平静,由于新老总刚上任,郭艾伦就表示希望离队,所以工作量非常大,特别是距离CBA新赛季球员注册只有不到一个月的时间。除了郭艾伦之外,其他人的续约基本没有国际全息隐形传输首次实现!电影场景或成真在许多科幻电影中,我们常看到电影人物之间联络都是通过全息通讯设备,实时地将自己的全身投影到对方面前。全息投影的实现第一步是利用干涉原理记录物体光波信息,进行拍摄,第二步利用衍射原理天猫奢品七夕洞察年轻人群更爱数字体验,更多大牌加码定制服务今年七夕,重视中国市场的奢侈品大牌们正在加速升级线上消费体验。据了解,近百家奢侈品牌的超过4万款商品在天猫奢品推出定制服务,包括提供免费商品镌刻礼品包装语音礼品卡的定制服务等,提供如果郭艾伦赵睿周鹏相继离开,辽粤是否会退出夺冠舞台?那么问题来了,随着郭艾伦赵睿周鹏都离开,广东与辽宁是否会因此退出夺冠的舞台呢?答案当然是否定的。一方面,两支队伍仍然拥有丰厚的阵容,尽管赵睿与周鹏是队伍后卫线与锋线不可或缺的一环,杨幂和魏大勋公开暧昧?每次说到娱乐圈的明星,一点蛛丝马迹都能被大众媒体和网友围观和热议。作为公众人物,他们可以说全身上下都充满了娱乐八卦的热门话题,这也是为什么热搜上经常能看到他们的名字。就在两天前,魏王思聪女友七夕秀恩爱,穿吊带睡衣做饭,校长送百万名牌礼物8月4日,是国内一年一度的七夕情人节,对于很多单身人士来说,昨天肯定是个非常难熬的夜晚,有些人选择下班打游戏直到深夜,有些人化悲愤为力量,留在公司加班,勤奋的样子让老板都刮目相看当孝女徐婷,在生命寂灭的那一刻,谁又能理解她的解脱?在娱乐圈,有很多孝顺的明星。可要说印象让我最深刻的,那还得是女演员徐婷!虽然她没有大红大紫,也没有太过出名的作品,对于演艺圈来说,也只能算是个小演员。但在孝道这一块儿,她的故事却感汪小菲官宣后,张兰评论前儿媳大S都骑脖子上了,亏我们跑得快都说翻脸和翻书一样快,这句话用在张兰身上,真是再合适不过了。近期,汪小菲在朋友圈晒出一张和张颖颖的合照,这还是在葛斯齐爆料风波后,汪小菲首次在自己的社交账号上晒出和张颖颖的正脸合照