app 设置静态文件路径 static_folder='static',在 static 文件夹中有一个 api.json 文件。
在设置了 app = Flask(__name__, static_url_path='') 之后,匹配到 /static 开头的请求,就把接收到所有的 "/static/api.json" 请求,就自动变成 "/api.json"了?
class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None)
1
lisisi OP 这样不是每个路由请求,都要匹配两次吗?
一次匹配下“/”,看看有没有 api.json,再匹配一次“/static/”,看看有没有 api.json ? |
2
j0hnj 2019-03-25 19:34:03 +08:00
不是很明白你在说什么,但你的理解是不对的。
默认情况下 (static_folder='static', static_url_path=None), Flask 会自动添加一条路由 /static/<path:filename> 到 static 这个 endpoint, 然后交给 Flask.send_static_file 函数处理,所以请求 /staic/api.json 就会返回 static 目录下的 api.json 文件。 如果你设置 static_url_path='', 那么注册的静态文件处理路径就会变成 /<path:filename>, 所以任何不包含 "/" 的请求(因为 path converter 的正则是 "[^/].*?") 都会交给这条正则来处理。 |