Python 为什么aiohttp不允许在url路径中使用冒号?

Python 为什么aiohttp不允许在url路径中使用冒号?,python,http,telegram-bot,aiohttp,Python,Http,Telegram Bot,Aiohttp,我正在创建一个电报机器人,通过webhook获取更新。 因此,我成功注册了webhook,url如下所示: https://my-app.herokuapp.com/123456789:aglbfiwefiuwehwelf # url with fake token 然后我添加了一个路由来处理更新: app.router.add_route('POST', '/123456789:aglbfiwefiuwehwelf', webhook) 机器人托管在heroku上,当我运行它时,在her

我正在创建一个电报机器人,通过webhook获取更新。 因此,我成功注册了webhook,url如下所示:

https://my-app.herokuapp.com/123456789:aglbfiwefiuwehwelf  # url with fake token
然后我添加了一个路由来处理更新:

app.router.add_route('POST', '/123456789:aglbfiwefiuwehwelf', webhook)
机器人托管在heroku上,当我运行它时,在heroku日志中看到404错误。我在本地测试了它,发现aiohttp不能用冒号解析url。我用一个变量解决了这个问题
app.router.add_route('POST','/{token}',webhook)
,但我感兴趣的是,为什么实际上aiohttp不允许在url路径中使用冒号?

在GitHub中,您可以查看错误历史,以查看更改代码库特定部分的提交

  • 最初,它只被检查为不在中
  • 然而,这太宽松了,因此有一个限制设置为在中仅接受Python标识符
  • 然后,似乎需要更多的放松,因此通过为点和冒号添加拆分器,使规则更加放松。这是版本0.18.1
  • 接下来添加了破折号
  • 最后,也允许使用下划线
  • 因此,从0.18.1开始,允许使用冒号。我建议您升级您的aiohttp依赖项

    另一个注意事项是,我不能100%确定是否可以在url模式中使用括号,请参见