在api目录下新建一个http.js,实现代码如下:
import Qs from 'qs'
import axios from 'axios'
import store from '@/store'
import * as utils from '@/utils' //工具类
import { Toast } from 'mand-mobile'
const instance = axios.create({
baseURL: '', // 后端接口根目录
message: true
})
// 错误控制
const errorHandle = (status, message) => {
switch (status) {
case 401:
// store.dispatch('logout')
break
case 403:
break
case 404:
break
default:
Toast.failed(message)
}
}
// axios请求拦截器
/* 拦截器一般做什么?
1. 修改请求头的一些配置项
2. 给请求的过程添加一些请求的图标
3. 给请求添加参数 */
instance
.interceptors
.request
.use(config => {
const token = utils.env !== 'dev' ? store.state.auth.token : ''
token && (config.headers.common.token = token)
if (config.method === 'post' && config.data) {
if (Object.prototype.toString.call(config.data) !== '[object FormData]') {
config.data = Qs.stringify(config.data)
}
config.headers.common['Content-Type'] = 'multipart/form-data'
}
return config
}, error => {
return Promise.reject(error)
})
// 响应拦截器,接受响应接口后的统一处理
instance
.interceptors
.response
.use(response => {
response.success = response.data.success
if (response.config.message) {
if (!response.success) {
response.data.message && Toast.failed(response.data.message)
} else {
response.config.method === 'post' && Toast.succeed(response.data.message || '操作成功')
}
}
return response
}, error => {
const { response } = error
response
? errorHandle(response.status, response.data.message || '网络连接失败,请稍后重试!')
: Toast.info('网络连接失败,请稍后重试!')
return Promise.reject(error)
})
export const createAPI = (url, method, params, config = {}) => {
if (method === 'get') {
config.params = params
} else {
config.data = params
}
return instance({
url,
method,
...config
})
}
export default instance
配置接口方式:
在api目录下新建个index.jsimport { createAPI } from './http'
export default {
wxOuth: params => createAPI('/wechat/getOauthUrl', 'get', params)
}
最后在我们的vue组件中引入即可 import * as api from '@/api'
调用方式为: api.wxOuth(params).then(res=> {}).catch(err => {})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。