Python FastAPI:无法使错误处理按预期工作

Python FastAPI:无法使错误处理按预期工作,python,vue.js,fastapi,Python,Vue.js,Fastapi,我只是在学习FastAPI(并且喜欢它),所以很可能我做错了什么。但我的问题是: 在下面的代码片段中,如果没有用户,我将创建一个新用户 代码运行良好,但我遇到的问题是错误处理。错误会被正确地推送到FastAPI的内部文档或Postman之类的API客户端,但不会返回到我正在使用的实际客户端或命令行 @app.post(“/users/”,response\u model=schemas.User) def create_user(user:schemas.UserCreate,db:Sessio

我只是在学习FastAPI(并且喜欢它),所以很可能我做错了什么。但我的问题是:

在下面的代码片段中,如果没有用户,我将创建一个新用户

代码运行良好,但我遇到的问题是错误处理。错误会被正确地推送到FastAPI的内部文档或Postman之类的API客户端,但不会返回到我正在使用的实际客户端或命令行

@app.post(“/users/”,response\u model=schemas.User)
def create_user(user:schemas.UserCreate,db:Session=Depends(get_db)):
db_user=crud.get_user_by_username(db,username=user.username)
如果db_用户:
引发HTTPException(
状态\代码=400,详细信息=f“用户名{user.Username}已注册”
)
返回crud.create_user(db=db,user=user)

如果我使用自动生成的FastAPI文档(或Postman)并以这种方式监视响应,我会得到预期的错误:

但是,当我查看在客户端(Vue)接收到的
uvicorn
服务器正在记录的内容时,它并不包含以下信息:

正如您所看到的,它只是说
错误的请求
,而不是用
{“detail”:“Username'miketest'ready registered”}


我做错了什么?如何确保返回完整的
HTTPException
信息?我很确定问题出在FastAPI端,因为客户端也在接收服务器输出的内容。

属于控制台日志,它不包含API响应,即JSON响应


如果使用某个客户端通过API发送请求,您可以看到实际的响应,例如。

我发现了问题所在,这本身不是FastAPI问题,而是它如何将信息传递回前端

我想我应该保留这个问题,以防有人有同样的问题


解决方案:

    try {
      await api().post('register',JSON.stringify(data);
    } catch (err) {
      error = err.response.data.detail;
    }

也就是说,从FastAPI发送的错误是一个对象,它具有
响应
,其中包含
数据
,其中包含
细节


邮递员或任何类似的回复只给出了一个带有
细节的对象。我没有看到中间有一个
数据
层,我在Vue中很难看到整个对象。

是的,@Arakkal。我想我没有把我的观点说清楚:是的,无论我使用FastAPI文档还是Postman,API都会返回感兴趣的信息。但是,当我使用实际的客户机或命令行时,正如我在图像中所示,信息正在丢失。我更新了问题以澄清这一点。但是,如何正确地获得对实际客户(Vue)的响应?你知道吗?我不熟悉*vue.js“,但有趣的是,你说当你尝试使用命令行时,响应会丢失。你是如何尝试的?你能在OP中添加相同的吗?对不起,当我说“命令行”时“,我指的是从命令行启动服务器时从服务器获得的输出。这就是我在上述问题中提出的;这是蓝色背景的屏幕截图。您是否期待json响应?是的。我想我现在不知道它是否有效。我以前使用过Flask(Python)和Express(JS)作为后端,但我承认我不是专家。我不明白为什么FastAPI向Postman及其内部API提供完整的输出,但不向服务器日志提供完整的输出,也不向Vue提供完整的输出。