【问题标题】:detecting error for Nextjs API route with Axios使用 Axios 检测 Nextjs API 路由的错误
【发布时间】:2021-07-16 03:18:32
【问题描述】:

我正在使用 nextjs api/routes 我有一个登录名,当出现问题时返回一个 401 和我想向用户显示的消息文本。

一个最小的例子是:

API:/api/v1/auth/sigin.js

export default async (req, res) => {
const { name, password } = req.body;
const url = process.env.SH_API_BASEURL + 'auth/signin';
console.log(url);

try {
    const resp = await axios.patch(url, { name, password });
    return res.status(200).send(resp.data);
} catch (err) {
    const { response } = err;
    const status = response.status;
    const message = response.data.errors[0].message;
    console.log(`status: ${status}, message ${message}`);
    return res.status(status).send(message);
}
};

页面/pages/auth/signin.js

const handleFormSubmit = async (formData, e) => {
    e.preventDefault();
    try {
        const res = await axios.post('/api/v1/auth/signin', formData);
        

        router.push('/secure/home');
    } catch (err) {
        console.log('pages auth in error');
        console.log(err);
        setSubmitError(true);
        console.log('sigin handle submit error');
        
    }
};

console.log(err) 显示输出

Error: Request failed with status code 401
at createError (createError.js:16)
at settle (settle.js:17)
at XMLHttpRequest.handleLoad (xhr.js:62)

如何访问页面代码中的 statusCode 和文本?

任何答案都可以在 nextjs api/routes 的上下文中

谢谢

【问题讨论】:

标签: axios next.js


【解决方案1】:

可以访问axios错误的response属性来获取状态

const handleFormSubmit = async (formData, e) => {
    e.preventDefault();
    try {
        const res = await axios.post('/api/v1/auth/signin', formData);
        router.push('/secure/home');
    } catch (err) {
        console.log(err.response.status);
    }
};

【讨论】:

  • 非常感谢我通过记录 err 对象来寻找结构的初始值。
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 2020-10-31
  • 2021-08-24
  • 2023-01-24
  • 2022-08-23
  • 2022-12-05
  • 2023-02-19
  • 2021-11-07
相关资源
最近更新 更多