1

在 Sanic 中,可以在传入 URL 的路由参数中指定各种原始类型,例如<param:int>or <param:number>,以便接收请求参数的函数可以自动正确解析类型。

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

我的错误信息:

Error: Requested URL /api/True not found

我的代码:

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

我还尝试了其他拼写,例如 Boolean 和 BooleanType 无济于事。Sanic 的版本是 0.7.0,在 virtualenv 中使用 Python 3.6.5。

4

1 回答 1

2

正如您在此处的 sanic 代码库default中所见,如果参数的类型未知,则 sanic 将仅使用str.

已知类型在这里定义

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类型。

于 2018-08-10T17:19:23.273 回答