python network_error ai_generated true

Starlette 异常:404 未找到

starlette.exceptions.HTTPException: 404 Not Found

ID: python/starlette-route-not-found

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

版本兼容性

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

根因分析

请求的 URL 路径与任何已定义的路由都不匹配,或使用了错误的方法(如 GET 而非 POST)。

English

请求的 URL 路径与任何已定义的路由都不匹配,或使用了错误的方法(如 GET 而非 POST)。

generic

解决方案

  1. 90% 成功率
    from starlette.routing import Route
    async def homepage(request):
        return Response('Hello')
    app = Starlette(routes=[Route('/', homepage)])
  2. 85% 成功率
    from starlette.routing import Route
    async def catch_all(request):
        return JSONResponse({'error': 'not found'}, status_code=404)
    app = Starlette(routes=[Route('/{path:path}', catch_all)])

无效尝试

常见但无效的做法:

  1. 50% 失败

    根路径可能也没有定义路由,仍然会得到 404。

  2. 80% 失败

    问题在于路由配置,忽略后无法访问目标资源。