我的快速API终点在这里:

@app.post("/api/signup", status_code=status.HTTP_200_OK)
async def signup( credentials : signupcred ):
  try: 
   print(credentials.email,  credentials.password1, credentials.name )
   response = account.create(email= credentials.email, password= credentials.password1, name = credentials.name , user_id= ID.unique() )

   return {response}

  except Exception as e: 
         raise HTTPException(status_code= status.HTTP_403_FORBIDDEN)  # Return an appropriate error status code

在前端,我想在引发异常后打印响应,因为响应很好地解释了错误.我不想向用户发送http错误代码.

我的前端是:

const handlesignup = async (e: any) => {
  e.preventDefault();
  setLoading((loading) => !loading);
  try {
    const signupresponse = await axios.post("/api/signup", {
      email: signupemail,
      password1: password1,
      name: name,
    }); // Send as query paramers );
    // const loginresponse = await axios.post('/api/login', {email, password} )// Send as query paramers );
    // setIsloggedin(()=> true)
    router.replace("/dashboard");
    setLoading((loading) => !loading);
  } catch (error) {
    alert(error);
  }
};

console.log不起作用,因为我使用具有快速API后台的nextjs.我只是想将创建函数的响应打印到前端,以便用户知道为什么发生函数错误.此时alert 显示:Axios错误:请求失败,状态代码403

推荐答案

看到Axios - Handling Errors

您可以通过error.response?.data访问回复正文.

例如,要在Next.js组件中显示它,您通常只需使用React状态

const [error, setError] = useState<string>();

const handlesignup = async (e: any) => {
  e.preventDefault();
  setError("");
  setLoading(true);
  try {
    const signupresponse = await axios.post("/api/signup", {
      email: signupemail,
      password1: password1,
      name: name,
    }); // Send as query paramers );
    // const loginresponse = await axios.post('/api/login', {email, password} )// Send as query paramers );
    // setIsloggedin(()=> true)
    router.replace("/dashboard");
  } catch (error) {
    console.warn('Signup failed', error);
    setError(error.response?.data ?? error.message);
  } finally {
    setLoading(false);
  }
};

if (error) {
  return <p className="error">{error}</p>;
}

Typescript相关问答推荐

如何在类型脚本中声明对象其键名称不同但类型相同?

Typescript:将内部函数参数推断为子对象键的类型

在TypeScript中,除了映射类型之外还使用的`in`二进制运算符?

类型{...}的TypeScript参数不能赋给类型为never的参数''

如何在Typescript 中输入两个相互关联的变量?

部分类型化非 struct 化对象参数

TypeScrip表示该类型不可赋值

如何将别名添加到vitest配置文件?

刷新时保持当前名称的Angular

从类型脚本中元组的尾部获取第n个类型

如何在不违反挂钩规则的情况下动态更改显示内容(带有状态)?

创建一个函数,该函数返回一个行为方式与传入函数相同的函数

如何通过转换器类继承使用多态将对象从一种类型转换为另一种类型

重写返回任何

有没有办法在Reaction组件中动态导入打字脚本`type`?

如何调整项目数组,但允许权重影响顺序

有没有一种方法可以提升对象的泛型级别,而对象的值是泛型函数?

Angular 16:无法覆盖;baseUrl;在tsconfig.app.json中

是否有可能不允许在 TypeScript 中设置类属性,但也会抛出运行时错误?

有没有办法将类型与关键更改相匹配?