【问题标题】:Getting axios response if Node server sends status 400如果节点服务器发送状态 400,则获取 axios 响应
【发布时间】:2020-01-15 23:33:45
【问题描述】:

简单的 Node.js 获得一个在 try-catch 块中发送响应状态 200 或 400 的路由。

如果服务器发送 200 响应,我可以将其记录在我的 Axios 获取请求 (console.log(response.status)) 中。

但是,如果 catch 块运行并发送状态 400,我只会在显示错误的浏览器中收到错误,并且我的 response.status 不会运行。这是为什么呢?

我想在前端呈现一条消息,并根据发回的状态做出反应。如果发送了代码 400,那么我想从前端的响应中检索它,但目前还没有达到。

我是否错过了有关这些 Node.js 状态代码如何工作的一些信息?

感谢您的宝贵时间

这里是 Node.js 路由

try {
        const user = req.user;
        res.status( 200 ).send();
    } catch ( e ) {
        res.status( 400 ).send();
    }

这里是 Axios 获取请求

useEffect( () => {
        const call = async () => {
            let response = await axios( {
                method: "get",
                url: "/tasks"
            } );
            console.log( response );
            if ( response.status === 200 ) {
                setAuthorized( true );
                console.log( "We are authorized" );
            } else {
                setAuthorized( false );
                console.log( "We are not authorized" );
            }
        };
        call();
    } );

【问题讨论】:

    标签: node.js reactjs


    【解决方案1】:

    问题在于 axios 将 400 状态视为错误,并会抛出异常。您可以将参数传递给 axios 以防止这种情况发生,然后将其传回。

    这是一个使用validateStatus钩子的例子:

    axios.get('/user/12345', {
      validateStatus: function (status) {
        return status < 500; // Reject only if the status code is greater than or equal to 500
      }
    })
    

    有关详细信息,请参阅https://github.com/axios/axios 中的“处理错误”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 2021-01-16
      • 2021-11-07
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2016-07-08
      相关资源
      最近更新 更多