import {message} from 'antd'; import axios from 'axios'; message.config({ top: 200 }); // 配置API接口地址 var root = globalConfig.context; // 自定义判断元素类型JS function toType(obj) { return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase() } // 参数过滤函数 function filterNull(o) { for (var key in o) { if (o[key] === null) { delete o[key] } if (toType(o[key]) === 'string') { o[key] = o[key].trim() } else if (toType(o[key]) === 'object') { o[key] = filterNull(o[key]) } else if (toType(o[key]) === 'array') { o[key] = filterNull(o[key]) } } return o } /* 接口处理函数 这个函数每个项目都是不一样的,我现在调整的是适用于 https://cnodejs.org/api/v1 的接口,如果是其他接口 需要根据接口的参数进行调整。参考说明文档地址: https://cnodejs.org/topic/5378720ed6e2d16149fa16bd 主要是,不同的接口的成功标识和失败提示是不一致的。 另外,不同的项目的处理方法也是不一致的,这里出错就是简单的alert */ function apiAxios(method, url, params) { if (params) { params = filterNull(params) } return new Promise((resolve, reject) => { axios({ method: method, url: url, data: method === 'POST' || method === 'PUT' ? params : null, params: method === 'GET' || method === 'DELETE' ? params : null, baseURL: root, withCredentials: false //跨域请求 true }) .then(function (res) { resolve(res.data); }) .catch(function (err) { let res = err.response; message.error(`状态码 : ${res.status} , 请联系管理员 !`); reject(res); }) }) } // 返回在模板中的调用接口 module.exports = { get: function (url, params) { return apiAxios('GET', url, params) }, post: function (url, params) { return apiAxios('POST', url, params) }, put: function (url, params) { return apiAxios('PUT', url, params) }, delete: function (url, params) { return apiAxios('DELETE', url, params) } } /* 调用 */ /* import * as axios from './axios'; var url = '/api/admin/list',params={user:'liting'}; axios.get(url,params) .then(data=>{console.log(data)}); .catch(error=>{console.log(data)}); */