请求接口返回数据的为null,怎么去处理?这里是指兼容的一个处理。

一个$http的请求然后数据返回的是

success:{
   data:{
       data:{} //这里正常的情况下是有数据的。为了以防万一这里如果为null的话要怎么进行兼容的处理
    }
}

这里是一个简单的处理方法。

        this.$http({           //调用接口
          method:'POST',
          async:true,
          headers: {'Accept': '*/*'},
          url:this.askListUrl,  //this指data
          data:this.transMyResData  //向后台发送的数据
        }).then(function(response){  //接口返回数据
          if(response.data.data == null){ // 为空的处理
            return "";
          }else {  // 不为空的处理
            that.questions = response.data.data.list;
            that.total = that.questions;
            loading.close();
            if(response.data.data.total>=0){
              that.transMyResData.total=response.data.data.total;
              that.total_3 = response.data.data.total;
            }else{
              that.$message.error('失败');
            }
          }
        },function(error){
          loading.close();
          that.$message.error('网络连接失败')
        })

请教各位怎么才更规范一点。

阅读 13k
2 个回答

一般会和后端人员配合,通过code字段判断后端返回的数据,例如:

{
    code:100
    data:null,
    message:'没有相关数据'
}

正常的格式:

{
    code:0
    data:data,
    message:''
}

一般来说不会返回 null 的,如 @yhlben 所说,会做一个约定,通过错误码和信息来做一个判断。

正常情况下返回的数据会是两种样子:

// object 类型:
data: {...}

// array 类型:
data: [...]

array 类型好搞,直接空数组就完事了;
但是如果 object 要表示 空/此查询条件无结果 这类语义,可能还真只能 null 来表示,这种是业务逻辑上的空,错误码一般表示处理逻辑的错误,所以要分情况:

如果是处理逻辑错误(用户层输入参数非法/状态异常)那么靠 code 就可以做策略了,然后要记日志,前端提示错误;
如果是业务逻辑错误(无对应查询条件的结果)那么只能检查 data === null,然后做对应处理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题