我有简单的Bottle路线,URL应包含:
(冒号)符号。网址应与/REST/item:128
或/REST/item:89753
我的路线是
@route('/REST/item:<id:int>')
def icc(id):
return { 'id': id }
路线无法正常工作。 id
仅包含来自url id的最后一个char,而不是完整id。
如何在路线中使用:
(冒号)?
答案 0 :(得分:2)
我没有时间完全理解正在发生的事情,但我怀疑当路线上有冒号时,Bottle的路线正则表达式之一正在吃太多字符。
无论如何,使用反斜杠转义冒号似乎可以解决问题:
@route(r'/REST/item\:<id_:int>') # note the "r" prefix there
def icc(id_):
return {'id': id_}
这是一个测试请求及其响应:
=> curl -v 'http://127.0.0.1:8080/REST/item:123'
{"id": 123}
编辑:神秘solved。
Bottle目前支持url通配符的两种语法: 一个(自0.10开始)和:旧语法。两者都在这里描述: http://bottlepy.org/docs/dev/routing.html
在您的示例中,:触发了旧语法。解决方案是 用反斜杠逃避冒号(如SO答案中所述)。 转义完全实现并按预期工作,但是 无证。这就是我将此问题保持开放的原因。拉请求 更好的文件将受到欢迎。