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

时间:2017-02-08 21:36:12

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

1 个答案:

答案 0 :(得分:1)

在GitHub中,您可以浏览Blame历史记录以查看更改代码库特定部分的提交。

  1. 最初只在85668a中检查不是无。
  2. 但这太宽松了,因此设置了一个限制,只接受a2aa20中的Python标识符。
  3. 然后似乎需要更多的放松,所以98e3a9通过为点和冒号添加分割器使规则更加放松。这是版本0.18.1。
  4. 接下来的短划线添加了8cc211
  5. 最后也允许使用下划线3fd3d6
  6. 因此,从0.18.1开始,允许使用冒号。我建议你升级你的aiohttp依赖。

    另一个注意事项,我不能100%确定您是否可以在网址模式中使用括号,请参阅85668a