接口开发抛出HTTPException遇TypeError:该方法不接受关键字参数
问题:抛出HTTPException时出现TypeError的原因及解决办法
错误信息
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"posts id {id} not found. " ) TypeError: HTTPException() takes no keyword arguments
控制器代码
@app.get("/post/{id}") async def get_post(id:int): data = get_post_by_id(id) if not data: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"posts id {id} not found. ") return{"data":data}
原因
你导入的HTTPException不是FastAPI自带的类,大概率是误导入了Flask/Werkzeug等其他Web框架的同名异常类。这类第三方框架的HTTPException不支持用status_code、detail这类关键字参数初始化,因此触发了类型错误。
解决步骤
- 修正导入语句,确保从FastAPI库导入
HTTPException和status:from fastapi import HTTPException, status - 替换掉之前错误的导入(比如
from werkzeug.exceptions import HTTPException或from flask import HTTPException),保证代码里使用的是FastAPI提供的异常类。
内容的提问来源于stack exchange,提问作者Aman Sayeed
相关产品推荐
相关产品推荐

