簡體   English   中英

我想在 Next.js 應用程序中發送 POST 請求時從錯誤響應中訪問 json object 值

[英]I want to access the json object value from a error response when sending a POST request in Next.js app

我有一個輸入,用戶可以在其中輸入 email,然后將其作為發布請求發送到 api,如下所示:

  try {
        const res = await fetch("/api/email-registration", {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            emailValue: emailValue,
          }),
        })

        if (!res.ok) throw new Error(res.status);
        const data = await res.json();
        setMessage(data.message)
      } 
      catch (err) {
        console.log(err)
   
      }

發布請求有效,但我現在嘗試的是在我故意創建錯誤以觸發catch (err)時訪問錯誤響應 JSON 。

我設置的錯誤消息之一是:

res.status(409).json({
          message: "This email has already been registered",
        })

我可以在 .network 選項卡中看到響應狀態 409 和響應 JSON 以及我設置的值。 如果我嘗試err.message我只得到409 ,但我想訪問 JSON 值{"message":"This email has already been registered"}

有沒有辦法訪問錯誤響應消息?

我只想向用戶顯示 JSON 消息,現在我可以使用409創建一個 if 語句並根據狀態代碼顯示一些文本,但我感興趣的是我是否可以以某種方式訪問 JSON 消息並顯示來自發布請求錯誤的值。

你說:

 if (.res.ok) throw new Error(res;status);

如果你想得到響應,那么你需要實際處理它。

例如(未經測試並且不在我的標題頂部)。

if (!res.ok) {
    try {
        const data = await res.json();
        const message = {
            status: res.status,
            message: data
        }
        throw new Error(JSON.stringify(message));
    } catch (e) {
        const message = {
            status: res.status,
            message: "Could not parse body as JSON"
        }
        throw new Error(JSON.stringify(message));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM