在日常编写代码的时候我们发现,后端返回的数据种类不一,复杂多样,处理起来也很复杂,所以我们需要定义一个统一返回对象,方便前后端交互时使用。
一、自定义统一返回对象
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResponseResult {
private Integer code;
private String message;
private Object data;
public static ResponseResult success(Object data){
return new ResponseResult(200,"success",data);
}
public static ResponseResult success(String message,Object data){
return new ResponseResult(200,message,data);
}
public static ResponseResult fail(Integer code,String meaages){
return new ResponseResult(code,meaages,null);
}
}
1、code 状态码。
2、message 提示信息。
3、data 返回的数据,使用Object类型,可以接收任意对象类型。
4、同时我们还可以提供静态的success和fail方法,方便我们包装返回数据。
二、前端处理
instance.interceptors.response.use(
(response) => {
//响应状态码为200时执行
//提取token
// const localtoken = window.localStorage.getItem("token")
// if(localtoken == null){
// let token = response.data.data.token
// if(token != null){
// console.log(token)
// //将token存入localstorage
// window.localStorage.setItem('token',token)
// }
// }
//未登录则清空token
// let code = response.data.code
// if(code == 401){
// window.localStorage.removeItem("token")
// }
// let res = response.data
// if(typeof res === 'string'){
// res = res ? JSON.parse(res) : res
// }
// console.log(res)
let code = response.data.code
if(code == 200){
let messages = response.data.message
ElMessage({
message: messages,
type:'success'
})
}else{
let messages = response.data.message
ElMessage({
message: messages,
type: 'error'
})
}
return response
},
(error) => {
//返回异常处理
console.log(error.message)
//最后一定要返回一个promise
return Promise.reject(error)
}
)
我们可以根据统一返回的对象类型,在返回结果的过滤器中做出统一的处理。