import axios, { AxiosRequestConfig } from 'axios'
import { Toast } from 'vant'
const instance = axios.create({
baseURL: '',
timeout: 30000,
withCredentials: false,
})
//interceptors为axios拦截器,作用:
//1. 修改请求头的一些配置项
//2. 给请求的过程添加一些请求的图标
//3. 给请求添加参数
instance.interceptors.response.use(
response => {
if (response.status === 200 || response.data.data.code === 200 ) {
return response.data
}
return response
},
error => {
const { response } = error
// console.log("response---:",response)
let message = '网络错误'
if (response && response.data) {
if (response.data.message) {
message = response.data.message
} else if (response.data.data){
message = response.data.data.message
}
}
Toast(message)
return Promise.reject(error)
},
)
/**
* 简单的 get 请求,将 params 取出作为第二个参数,与 post 统一
* @param url
* @param params
* @param otherConfig
* @returns
*/
export const get = (
url: string,
params?: Record<string, unknown>,
//允许在向服务器发送前,修改请求数据,只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法。
//后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream。
//在传递给 then/catch 前,允许修改响应数据
otherConfig?: Omit<AxiosRequestConfig, 'params'>,
) => {
return instance.get(url, {
...(otherConfig || {}),
params: params || {},
})
}
export default instance
使用:
import request from './request'
import { hosts, prefix } from '@/const/hosts'
export const getNearCityByName = (cityName: string) => {
return request.get(`${hosts.qdfront}/getNearCityByName?cityName=${encodeURI(cityName)}`)
}