You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.js中如何根据错误消息细分处理API返回的400状态码错误

React 接口400错误细分处理方案

这个细分处理逻辑完全可以实现,操作步骤如下:

  • 第一步:确认错误对象字段
    先在catch块中打印完整error对象,确认后端返回的400错误中具体错误信息对应的字段名:
    .catch((error) => {
      console.log('完整错误对象:', error) // 打开浏览器控制台查看结构
      // 常见错误信息字段名:message/msg/errorMsg,以实际打印结果为准
    })
    
  • 第二步:修正现有语法错误
    你提供的示例代码中setState的闭合括号位置错误,需要将this.setState({result: '400')};修正为this.setState({result: '400'});
  • 第三步:实现细分分支处理
    假设打印后确认错误信息字段为message,替换你代码中的ERRORMESSAGEHERE即可,完整代码如下:
    OnSend = () => {
        MyService.SendPost(this.state.enteredValue)
            .then(() => {
                this.setState({result: 'success'});
            })
            .catch((error) => {
                switch(error.errorCode) {
                    case 400:
                        switch(error.message) {
                            case 'error message 1':
                                this.setState({result: '400 with error message 1'});
                                break;
                            case 'error message 2':
                                this.setState({result: '400 with error message 2'});
                                break;
                            default:
                                this.setState({result: '400 通用错误提示'});
                                break;
                        }
                        break;
                    case 500:
                        this.setState({result: '500'});
                        break;
                    default:
                        this.setState({result: '其他错误'});
                        break;
                }
            });
    };
    
  • 可选优化:替换嵌套switch为对象映射
    如果后续400细分错误类型较多,嵌套switch可读性较差,可改用对象映射的方式维护:
    // 可单独抽离为配置文件,后续新增错误直接加键值对即可
    const BAD_REQUEST_MSG_MAP = {
      'error message 1': '400 with error message 1',
      'error message 2': '400 with error message 2',
    }
    
    OnSend = () => {
      MyService.SendPost(this.state.enteredValue)
        .then(() => {
            this.setState({result: 'success'});
        })
        .catch((error) => {
            switch(error.errorCode) {
                case 400:
                    const tip = BAD_REQUEST_MSG_MAP[error.message] || '400 通用错误提示'
                    this.setState({result: tip});
                    break;
                case 500:
                    this.setState({result: '500'});
                    break;
                default:
                    this.setState({result: '其他错误'});
                    break;
            }
        });
    };
    

内容的提问来源于stack exchange,提问作者Christos Stefanopoulos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:48:02