刚刚学习flask时肯定会看到一个最简洁的应用
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
print("has called hello function.")
return 'hello, nzh.'
app.run()
而且,我们也知道@app.route()函数是用来做路由的,接下来我们就说说/hello和/hello/的区别。
当我们使用@app.route('/hello')时,在浏览器中访问127.0.0.1/hello是肯定可以访问的,但是如果多输入一个/呢,很遗憾,浏览器会呈现无法找到页面的错误,HTTP状态码为404。
那如果使用@app.route('/hello/')呢?经过测试的你会发现,既可以访问127.0.0.1/hello,也可以访问127.0.0.1/hello/,很明显后者的容错率更高啊。但是更深层次的原因是什么呢?
这里我们需要借助chrome的开发者工具来看一下,打开chrome开发者工具。
windows快捷键:F12,mac快捷键:cmd+option+J。
然后访问127.0.0.1/hello/,结果如图:
image.png
再访问127.0.0.1/hello呢?,结果如图:
image.png
如果了解HTTP协议的话,你应该看到一个很熟悉的HTTP状态码,301。301代表重定向,也就是说我们访问127.0.0.1/hello时发起的HTTP请求进行了重定向,URL被重定向到了127.0.0.1/hello/。那么我们如何去证明呢?答案在HTTP请求的header里。如图:
image.png
location参数在header中表示重定向到了哪个URL,并且返回状态码301。
网友评论