当前位置: 首页 > 知识库问答 >
问题:

用Axios检测Nextjs API路由错误

白智
2023-03-14

我使用nextjs API/路由,我有一个登录,当一个问题发生时,返回一个401和消息文本,我想显示给用户。

一个最小的例子是:

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);
}
};
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');
        
    }
};
Error: Request failed with status code 401
at createError (createError.js:16)
at settle (settle.js:17)
at XMLHttpRequest.handleLoad (xhr.js:62)

谢谢

共有1个答案

柳刚豪
2023-03-14

您可以访问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);
    }
};
 类似资料:
  • 问题内容: 我必须根据浏览历史实现一些业务逻辑。 我想做的是这样的: URL更新后,有什么方法可以接收来自react-router的回调吗? 问题答案: 尝试检测路线变化时,可以使用功能。考虑到您正在使用,请用HOC 包装您的组件以访问道具。 返回一个函数。您将使用它来收听。 您可以像这样配置路线 index.js 然后在 AppContainer.js中 从历史文档: 您可以使用收听当前位置的更

  • 英文原文:http://emberjs.com/guides/testing/testing-routes/ 单元测试方案和计算属性与之前单元测试基础中说明的相同,因为Ember.Route集成自Ember.Object。 路由测试可以通过集成测试或者单元测试来进行。集成测试对路由的测试具有更好地覆盖性,因为路由通常用来执行过渡和数据加载,这些测试在完整上下文中更加容易测试,而独立上下文则没有那么

  • 我正在查找在我的中检测路由更改。 此后,我将检查全局用户令牌,看看他是否已登录。然后我可以重定向用户,如果他没有登录。

  • 问题内容: 我正在使用React Router。我想检测我来自何处的上一页(在同一应用程序内)。我在上下文中拥有路由器。但是,我在路由器对象上看不到“上一条路径”或历史记录之类的任何属性。我该怎么做? 问题答案: 您可以在生命周期方法中保存先前的路径。该逻辑非常接近文档的疑难解答部分中提供的示例。 最近,可以从州访问它。

  • 为了定义辅助路由,我们必须首先添加一个命名的路由出口,其中要呈现辅助路由的内容。 接下来,我们必须定义到应用程序的辅助路由的链接,以导航和呈现内容。 每个辅助路由是独立的路由,可以拥有: 自己的辅助路由 自己的浏览器历史记录栈

  • 将路由链接到参数 显示特定产品详细信息的组件的路由需要该产品ID的路由参数。我们可以使用以下实现: 注意:product-details路由的路径中的 ,它将参数放在路径中。例如,要查看ID为5的产品的产品详细信息页面,必须使用以下URL:localhost:3000/product-details/5 注意,指令传递一个数组,该数组指定路径和路由参数。或者,我们可以使用JS跳转: Product