基于axios配置封装一个简单的request 请求


 
npm install axios
 
文件 request.js
 
import axios from "axios"
import config from './config'  

 

axios.defaults.timeout = 20 * 1000
axios.interceptors.request.use(config => {
let token = window.localStorage.getItem("token")    // 登录所需token
if (token) {
config.headers["Authorization"] = `Bearer ${token}`
config.headers["key"] = value
}
return config
})

 

// http response 拦截器
axios.interceptors.response.use(response => {
return response
})

 

function formatUrl(newApi, optUrl = '') {
let old_domain = 'http://question-bank.ieltsbro.com'
let url = newApi ? config.pre_domain : old_domain
let isStitch = optUrl.toString().indexOf('http'); 
let newUrl = isStitch < 0 ? url + optUrl : optUrl;
return newUrl;
}

 

//忽略这几个 status: 请求资源不存在时抛出错误  eg:
const skipStatus = [0, 700384, 700381, 20037, 20039, 20030];  
export default function request(options) {
let { url, method = 'GET', params, headers = {}, data = {}, newApi, ...rest } = options;
url = formatUrl(newApi, url);
headers = headers || {};
return axios({
url: url,
method: method,
params: { ...params },
headers: { ...headers },
data: data,
...rest,
})
.then(response => {
//status 非 0 的处理, error {message: 后台/http错误提示, response: {data: 后台返回, status: http 状态} }
const { status, message } = response.data
if (!skipStatus.includes(status)){
const error = new Error(message)
error.response = response
throw error
}
return { ...response.data }
}).catch(error => {
throw error;
})
}
 
文件 services.js
用法:
import { request } from "request.js"
export function getData(params) {
return request({
  url: "apiUrl",
  newApi: true,
  method: "get",
  params: params 
})
}
 
export function postData(params) {
return request({
  url: "apiUrl",
  newApi: true,
  method: "post",
    data: params 
})
}
 
 
 
 
 
 
 
 
 
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM