python type_error ai_generated true

类型错误:路径参数'id'必须是整数

TypeError: Path parameter 'id' must be an integer

ID: python/starlette-route-parameter-type-conversion

其他格式: JSON · Markdown 中文 · English
80%修复率
84%置信度
0证据数
2024-09-05首次发现

版本兼容性

版本状态引入弃用备注
3.x active

根因分析

Starlette路由参数类型转换失败,预期整数但收到其他类型

English

Starlette路由参数类型转换失败,预期整数但收到其他类型

generic

解决方案

  1. 95% 成功率 确保URL路径包含有效整数
    GET /items/123
  2. 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)

无效尝试

常见但无效的做法:

  1. 在路由处理函数中手动转换类型 50% 失败

    Starlette在调用函数前已尝试转换,失败会抛出异常

  2. 使用字符串类型参数忽略转换 40% 失败

    类型转换是路由定义的一部分,忽略可能导致逻辑错误