博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask 路由映射对于双斜线的处理 //a//b
阅读量:5126 次
发布时间:2019-06-13

本文共 839 字,大约阅读时间需要 2 分钟。

例子

from flask import Flaskimport timefrom tornado.wsgi import WSGIContainerfrom tornado.httpserver import HTTPServerfrom tornado.ioloop import IOLoopapp = Flask(__name__)@app.route('//abc//a')def index():    # time.sleep(5)    return 'OK'@app.route('/abc//a')def index1():    return 'hhhh'if __name__ == '__main__':    http_server = HTTPServer(WSGIContainer(app))    http_server.listen(5000)    IOLoop.instance().start()

对于Flask,如上面这样的路由映射,是如何处理的呢?

  我们如果运行一下会发现,我们无论访问 'http://127.0.0.1:5000//abc//a' 还是 'http://127.0.0.1:5000/abc//a'返回的结果都是函数index1的结果,这是为什么?

分析源代码,debug我们发现,在werkzeug/routing.py中的1530行,path传递的过程中,werkzeug会将path_info-->>' //abc//a '的左侧的 ' / '去掉,然后再和前面的

http://127.0.0.1:5000拼接,所以访问'http://127.0.0.1:5000//abc//a'这个路由会路由到 'http://127.0.0.1:5000/abc//a',返回的是index1函数的结果。

 

转载于:https://www.cnblogs.com/lycsdhr/p/11203566.html

你可能感兴趣的文章
sizeof(类名字)
查看>>
四元数
查看>>
功率谱密度如何理解
查看>>
git clean解决 GIT error: The following untracked working tree files would be overwritten
查看>>
windows下的计算时间间隔 -- GetTickCount()
查看>>
Excel在数据表中悬停鼠标显示数据值
查看>>
UML类图知识
查看>>
香农的伟大论文《A Symbolic Analysis of Relay and Switching Circuits》
查看>>
OpenMark
查看>>
c++11 enum class用法
查看>>
excel中怎么将行转换为列及列转换成行
查看>>
git 版本(commit) 回退
查看>>
c++ 数值计算库Eigen
查看>>
CodeMeter 软件加密技术
查看>>
git 版本库之间的依赖
查看>>
仓库服务端软件artifactory
查看>>
Vulkan(0)搭建环境-清空窗口
查看>>
Vulkan(1)用apispec生成Vulkan库
查看>>
python全栈开发中级班全程笔记(第三模块、第一章(1.面向对象基础))
查看>>
python全栈开发中级班全程笔记(第三模块、第一章(多态、封装、反射、内置方法、元类、作业))...
查看>>