flask的路由实现原理(/hello和/hello/的区别)

咱们以路由/hello和/hello/的区别为例


下面我们在浏览器的地址栏中访问/hello,注意不是/hello/

可以看出有两次的请求,因为这种写法在flask的内部是经过了转发的,怎么看出来是经过了转发,通过http的headers中的Location可以看出是转发到了这个地址。

不管你在url中写的是/hello还是/hello/,在浏览器的地址栏中看到的都是/hello/

下面这种的结果是我们在浏览器的地址栏中访问的是/hello/,注意不是/hello

可以看到直接访问路由的地址是不会做flask的转发操作的


补充说明:

为什么要出现flask的转发的情况呢?因为要保证URL的唯一原则

因为加入我们的路由不是写/hello/而是/hello,那么访问的是一个视图函数,如果用户手动的在url后面加上/,访问的是另一个视图函数的话就不符合URL唯一原则了。

上图可以看出当我们写上路由/hello/和/hello的时候代码直接报错并停止了flask内置的web服务器

AssertionError:视图函数映射覆盖了一个现有的端点函数:hello

而至于为什么这样是因为还涉及到了一个搜索引擎优化的问题

假如我们为了防止用户在url后面手动加上/,而写了两个路由即/hello和/hello/,那么搜索引擎会搜索两次,但是其视图函数的内容是样的,这样就对搜索引擎不友好了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值