在Sanic路由参数中指定布尔值

时间:2018-08-10 17:11:37

标签: python sanic

在Sanic中,one may specify various primitive types in the incoming URL's route parameters,例如<param:int><param:number>,这样,接收请求参数的函数可以自动正确地解析类型。

但是,<param:bool>不起作用。 Sanic不支持布尔值,还是我使用了错误的关键字?

我的错误消息:

Error: Requested URL /api/True not found

我的代码:

app.add_route(APIController().entry, '/api/<param:bool>)

我也尝试了其他拼写,例如Boolean和BooleanType都没有用。在virtualenv中,使用Python 3.6.5的Sanic版本为0.7.0。

1 个答案:

答案 0 :(得分:1)

您可以在sanic codebase here中看到,如果参数的类型未知,则将使用default类型,即str

已知类型为defined here

REGEX_TYPES = {
    'string': (str, r'[^/]+'),
    'int': (int, r'\d+'),
    'number': (float, r'[0-9\\.]+'),
    'alpha': (str, r'[A-Za-z]+'),
    'path': (str, r'[^/].*?'),
    'uuid': (uuid.UUID, r'[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-'
             r'[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}')
}

因此,没有bool类型。