React封装axios 请求接口

requestService.js

import axios from "axios";
import _ from "lodash";
import qs from "qs";
var service = axios.create({
    timeout: 40000,
    headers: { "Content-Type": "application/x-www-form-urlencoded" }
});

// //添加请求拦截器
// service.interceptors.request.use(function (config) {
//     if (store.getters.token) {
//         config.headers['TOKEN'] = getCookie('TOKEN')
//     }
//     return config
// }, function (error) {
//     return Promise.reject(error)
// })

export default {
    //get请求
    get(url, param) {
        return new Promise((resolve, reject) => {
            service({
                method: "GET",
                url,
                params: param,
                crossdomain: true,
                headers: {
                    "Content-Type": "application/json",
                    "Access-Control-Allow-Origin": "*",
                    "token": sessionStorage.getItem('token')
                },
            })
                .then(res => {
                    //axios返回的是一个promise对象
                    resolve(res); //resolve在promise执行器内部
                })
                .catch(err => {
                    reject(err.message);
                });
        });
    },
    //post请求
    post(url, param) {
        console.log(sessionStorage.getItem('token'));
        return new Promise((resolve, reject) => {
            service({
                method: "POST",
                headers: {
                    "Content-Type": "application/json",
                    "Access-Control-Allow-Origin": "*",
                    "token": sessionStorage.getItem('token')
                },
                url,
                data: param
            })
                .then(res => {
                    let requestStatus = res.status;
                    if (requestStatus === 200) {
                        let data = res.data;

                        resolve(data);
                    } else {
                        reject(res.statusText);
                    }
                })
                .catch(err => {
                    reject(err.message);
                });
        });
    },

    postFormData(url, param) {
        return new Promise((resolve, reject) => {
            service({
                method: "POST",
                headers: {
                    "Content-Type": "multipart/form-data",
                    "Access-Control-Allow-Origin": "*",
                    "token": sessionStorage.getItem('token')
                },
                url,
                data: param
            })
                .then(res => {
                    let requestStatus = res.status;
                    if (requestStatus === 200) {
                        let data = res.data;

                        resolve(data);
                    } else {
                        reject(res.statusText);
                    }
                })
                .catch(err => {
                    reject(err.message);
                });
        });
    },

    postForUrl(url, param) {
        return new Promise((resolve, reject) => {
            service({
                method: "POST",
                headers: {
                    "Content-Type": "application/x-www-form-urlencoded",
                    "Access-Control-Allow-Origin": "*",
                    "token": sessionStorage.getItem('token')
                },
                url,
                crossdomain: true,
                params: param
            })
                .then(res => {
                    let requestStatus = res.status;
                    if (requestStatus === 200) {
                        let data = res.data;

                        resolve(data);
                    } else {
                        reject(res.statusText);
                    }
                })
                .catch(err => {
                    reject(err.message);
                });
        });
    },

    uploadFile(url, param) {
        return new Promise((resolve, reject) => {
            service({
                method: "POST",
                url,
                data: param,
                headers: {
                    "Content-Type": "multipart/form-data",
                    "Access-Control-Allow-Origin": "*",
                    "token": sessionStorage.getItem('token')
                },
            })
                .then(res => {
                    console.log(res);
                    let requestStatus = res.status;
                    if (requestStatus === 200) {
                        let data = res.data;
                        console.log();
                        let dataStatus = data.code;
                        if (dataStatus === 200) {
                            resolve(data);
                        } else {
                            reject(data);
                        }
                    } else {
                        console.log(res);
                        reject(res.statusText);
                    }
                })
                .catch(err => {
                    reject(err.message);
                });
        });
    }
};

  network.js

import RequestServices from "./requestService";
import axios from "axios";

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

/**
 * 从服务器获取数据
 * @param {*} requestUrl 接口地址
 * @param {*} requestParams 请求参数
 * @param {Array} responseParams 返回数据中需要的参数名 返回的数据会根据responseParams参数列表的顺序返回数据。
 */
export function getData(requestUrl, requestParams, responseParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.post(requestUrl, requestParams).then(
      function (res) {
        let dataStatus = res.code;

        if (dataStatus == 200) {
          let resultData = [];
          if (responseParams != null && typeof responseParams != undefined) {
            responseParams.map((ele, i) => {
              let responseParamData = res[ele];
              resultData.push(responseParamData);
            });
          }
          resolve(resultData);
        } else if (dataStatus === 106) {
          //登录状态超时
          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          if (res.data.length > 0) {
            reject(res.data[0]);
          } else if (res.data) {
            reject(res.data);
          } else {
            reject(res.msg);
          }
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 从服务器获取数据 request for formdata
 * @param {*} requestUrl 接口地址
 * @param {*} requestParams 请求参数
 * @param {Array} responseParams 返回数据中需要的参数名 返回的数据会根据responseParams参数列表的顺序返回数据。
 */
export function getDataForFormData(requestUrl, requestParams, responseParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.postFormData(requestUrl, requestParams).then(
      function (res) {
        let dataStatus = res.status;
        if (dataStatus === 200) {
          let resultData = [];

          if (responseParams != null && typeof responseParams != undefined) {
            responseParams.map((ele, i) => {
              let responseParamData = res[ele];
              resultData.push(responseParamData);
            });
          }

          resolve(resultData);
        } else if (dataStatus === 106) {
          //登录状态超时

          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          reject({ message: res.msg });
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 从服务器获取数据
 * @param {*} requestUrl 接口地址
 * @param {Array} responseParams 返回数据中需要的参数名 返回的数据会根据responseParams参数列表的顺序返回数据。
 */
export function getDataForUrl(requestUrl, responseParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.postForUrl(requestUrl, null).then(
      function (res) {
        let dataStatus = res.status;
        if (dataStatus === 200) {
          let resultData = [];
          if (responseParams != null && typeof responseParams != undefined) {
            responseParams.map((ele, i) => {
              let responseParamData = res[ele];
              resultData.push(
                typeof responseParamData === "undefined"
                  ? null
                  : responseParamData
              );
            });
          }

          resolve(resultData);
        } else if (dataStatus === 106) {
          //登录状态超时

          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          reject(res.msg);
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 向服务器发送数据 无需接收返回值
 * @param {*} requestUrl
 * @param {*} requestParams
 */
export function sendData(requestUrl, requestParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.post(requestUrl, requestParams).then(
      function (res) {
        let dataStatus = res.status;

        if (dataStatus === 200) {
          resolve(["success"]);
        } else if (dataStatus === 106) {
          //登录状态超时

          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          reject(res.msg);
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 向服务器发送数据 无需接收返回值
 * @param {*} requestUrl
 */
export function sendDataForUrl(requestUrl) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.postForUrl(requestUrl, null).then(
      function (res) {
        console.log(res);
        let dataStatus = res.status;

        if (dataStatus === 200) {
          resolve(["success"]);
        } else if (dataStatus === 106) {
          //登录状态超时

          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          reject(res.msg);
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 上传文件
 * @param {*} requestUrl 请求url
 * @param {*} requestParams 请求参数
 * @param {*} responseParams 接收返回数据
 */
export function uploadFile(requestUrl, requestParams, responseParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.uploadFile(requestUrl, requestParams).then(
      function (res) {
        console.log(res);
        let dataStatus = res.code;
        if (dataStatus === 200) {
          let resultData = [];
          if (responseParams != null && typeof responseParams != undefined) {
            responseParams.map((ele, i) => {
              let responseParamData = res[ele];
              resultData.push(responseParamData);
            });
          }

          resolve(resultData);
        } else if (dataStatus === 106) {
          //登录状态超时

          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          console.log(res);
          reject(res.msg);
        }
      },
      function (err) {
        console.log(err);
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 从服务器获取数据
 * @param {*} requestUrl 接口地址
 * @param {*} requestParams 请求参数
 * @param {Array} responseParams 返回数据中需要的参数名 返回的数据会根据responseParams参数列表的顺序返回数据。
 */
export function getDataByGet(requestUrl, requestParams, responseParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.get(requestUrl, requestParams).then(
      function (resData) {
        console.log(resData);
        let res = resData.data;
        let dataStatus = res.code;
        if (dataStatus == "200") {
          let resultData = [];
          console.log("已执行");
          if (responseParams != null && typeof responseParams != undefined) {
            responseParams.map((ele, i) => {
              let responseParamData = res[ele];
              resultData.push(responseParamData);
            });
          }
          console.log(resultData);
          resolve(resultData);
        } else if (dataStatus === 106) {
          //登录状态超时
          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          console.log(res);
          if (res.data) {
            if (res.data.length > 0) {
              reject(res.data[0]);
            } else {
              reject(res.msg);
            }
          } else {
            reject(res.msg);
          }
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

/**
 * 从服务器获取数据(请求失败可以获得响应数据)
 * @param {*} requestUrl 接口地址
 * @param {*} requestParams 请求参数
 * @param {Array} responseParams 返回数据中需要的参数名 返回的数据会根据responseParams参数列表的顺序返回数据。
 */
export function getDataByGetAndRes(requestUrl, requestParams, responseParams) {
  let requestPromise = new Promise((resolve, reject) => {
    RequestServices.get(requestUrl, requestParams).then(
      function (resData) {
        console.log(resData);
        let res = resData.data;
        let dataStatus = res.code;
        if (dataStatus == "200") {
          let resultData = [];
          console.log("已执行");
          if (responseParams != null && typeof responseParams != undefined) {
            responseParams.map((ele, i) => {
              let responseParamData = res[ele];
              resultData.push(responseParamData);
            });
          }
          console.log(resultData);
          resolve(resultData);
        } else if (dataStatus === 106) {
          //登录状态超时
          window.userOuted && window.userOuted();
          reject("登录状态超时,请重新登录。");
        } else if (dataStatus === 300) {
          source.cancel();
          window.userOuted && window.userOuted();
          reject("用户登录信息过期,请重新登录。");
        } else {
          reject(res);
        }
      },
      function (err) {
        reject(err);
      }
    );
  });

  return requestPromise;
}

 应用

import Api from './api';
import * as network from '@/Networking/network';

export function findAllTaskInfoList() {
    let requestUrl = Api.appMain.applicationDirectoryV3 + Api.task.findAllTaskInfoList;

    let requestPromise = new Promise((resolve, reject) => {
        network.getDataByGet(requestUrl, "", ["data"]).then((data) => {

            resolve(data[0]);

        }).catch((error) => {
            reject(error);
        });
    });

    return requestPromise;
}  
export function findAllDoneTaskInfoList(params) {
    let requestUrl = Api.appMain.applicationDirectoryV3 + Api.task.findAllDoneTaskInfoList;
    let requestParams = {
        pageNumber:params.page,
        pageSize:12
    }
    let requestPromise = new Promise((resolve, reject) => {
        network.getData(requestUrl, requestParams, ["data","total"]).then((data) => {
            let dataSource = {
                tableData: data[0],
                total: data[1],
            }
            resolve(dataSource);

        }).catch((error) => {
            reject(error);
        });
    });

    return requestPromise;
}

  

posted @ 2021-11-04 14:05  闰土的土  阅读(557)  评论(0编辑  收藏  举报