利用vue-cli
+ ElementUI
随手写个东西
然后根据网上的说法,简单封装了下axios
,设置了一个拦截器
,一个request
,一个response
如果我所以接口都是
limit = 50
我可以在request
里 设置
config.params['limit'] = 50;
但是我有些页面不能都是50,这样可能数据就太多了...
所以我想 设置部分的是20,一部分可能是10,大部分还是50,
然而我并不想每个页面请求的时候都带一个 limit=10
这种写法,
那么,请问各位大神,我该怎么写?
下面是我封装axios
的代码
import axios from 'axios';
import { Message } from 'element-ui';
import cookie from '../utils/cookie.js';
const service = axios.create({
baseURL: process.env.BASE_API,
timeout: 5000,
params:{}
});
service.interceptors.request.use(config => {
// console.log('请求前');
if (config.method === 'get') {
config.params['limit'] = 50;
}
if (cookie.getCookie('token') ) {
config.headers['x-auth-token'] = cookie.getCookie('token');
}
return config;
}, error => {
console.log(error);
Promise.reject(error);
})
// respone拦截器
service.interceptors.response.use(function (response) {
// console.log('请求后',this.$route.params);
// console.log(response.data);
const code = response.data.code;
const message = response.data.message;
if (code === 411000000) {
location.href = '/login'
}
if (code !== 0 && code !== 200 ) {
Message({
message: message,
type: 'error',
duration: 5 * 1000
});
}
return response;
},
error => {
console.log('err' + error);
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
});
return Promise.reject(error);
}
);
export default service;
建议我这样封装
import Qs from 'qs';
export default{
url: '/route',
baseURL: 'http://0.0.0.0:8080',
method: 'POST',
transformRequest: [function(data) {
}],
transformResponse: [function(data) {
}],
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
params: {
},
paramsSerializer: function(params) {
},
data: {},
timeout: 1000,
withCredentials: false, // default
responseType: 'json', // default
maxContentLength: 2000,
validateStatus: function(status) {
},
maxRedirects: 5 // default
};