美文网首页
在flask中/hello和/hello/的区别

在flask中/hello和/hello/的区别

作者: 转身丶即天涯 | 来源:发表于2018-07-13 00:06 被阅读21次

    刚刚学习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。

    相关文章

      网友评论

          本文标题:在flask中/hello和/hello/的区别

          本文链接:https://www.haomeiwen.com/subject/ytudpftx.html