python
type_error
ai_generated
true
类型错误:路径参数'id'必须是整数
TypeError: Path parameter 'id' must be an integer
ID: python/starlette-route-parameter-type-conversion
80%修复率
84%置信度
0证据数
2024-09-05首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.x | active | — | — | — |
根因分析
Starlette路由参数类型转换失败,预期整数但收到其他类型
English
Starlette路由参数类型转换失败,预期整数但收到其他类型
解决方案
-
95% 成功率 确保URL路径包含有效整数
GET /items/123
-
90% 成功率 在路由定义中使用字符串类型并手动验证
from starlette.routing import Route async def endpoint(request): id = request.path_params['id'] if not id.isdigit(): return JSONResponse({'error': 'Invalid ID'}, status_code=400)
无效尝试
常见但无效的做法:
-
在路由处理函数中手动转换类型
50% 失败
Starlette在调用函数前已尝试转换,失败会抛出异常
-
使用字符串类型参数忽略转换
40% 失败
类型转换是路由定义的一部分,忽略可能导致逻辑错误