在 Sanic 路由参数中指定布尔值
Specifying Boolean in Sanic Routing Parameter
在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,但无济于事。 Sanic 的版本是 0.7.0,在 virtualenv 中是 Python 3.6.5。
正如您在 sanic codebase here 中看到的,如果参数的类型未知,sanic 将只使用 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
类型。
在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,但无济于事。 Sanic 的版本是 0.7.0,在 virtualenv 中是 Python 3.6.5。
正如您在 sanic codebase here 中看到的,如果参数的类型未知,sanic 将只使用 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
类型。