使用 Axios 检测 Nextjs API 路由的错误
Posted
技术标签:
【中文标题】使用 Axios 检测 Nextjs API 路由的错误【英文标题】:detecting error for Nextjs API route with Axios 【发布时间】: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 的上下文中
谢谢
【问题讨论】:
这个:***.com/questions/44806333/… 回答你的问题吗? 这能回答你的问题吗? How can I get the status code from an http error in Axios? 【参考方案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 对象来寻找结构的初始值。以上是关于使用 Axios 检测 Nextjs API 路由的错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 NextJS 中为 getStaticProps 导入 API 路由?
无法使用 NextJS 9 的 API 路由设置 cookie
Next Js - 如何从需要授权的api中检索数据(通过axios)?
Nextjs 中使用 getServerSideProps 进行动态路由