//axios
npm install axios --save
//文件夹api
//index.js
//--包含多个请求函数的模块--函数的返回值是promise对象
import ajax from './ajax'
//请求地址以 ‘/api开头’ 需要和vue.config.js里面的解决跨域问题
const BASE = '/api'
//example01-根据经纬度获取位置详情
export const reqAddress = (longitude,latitude) => ajax({
method: 'GET',
url: BASE + `/position/${latitude},${longitude}`
})
//example02-获取食品分类列表
export const reqCategory = () => ajax.get(BASE + 'index_category')
//example01-根据经纬度获取商铺列表
export const reqShops = ({latitude,longitude}) => ajax({
method: 'GET',
url: BASE + '/shops',
params:{
latitude,
longitude
}
})
================================================
//ajax.js
//能发送ajax请求函数,函数的返回值是promise
// --处理post请求的请求体参数:转化为urlencode格式(默认用的是json格式)
// --让成功的结果不是response而是response.data:响应拦截器的成功回调
// --统一处理请求错误:响应拦截器的失败回调
import axios from 'axios'
import qs from 'qs'
//添加请求拦截器
axios.interceptors.request.use((config)=>{
const {method,data} = config
if(method.toUpperCase()==='POST' && data instanceof Object){
config.data = qs.stringify(data)
}
return config
})
//添加相应拦截器
axios.interceptors.response.use((response)=>{
return response.data
},(error)=>{
alert('请求异常'+error.message)
//中断promise 链
return new Promise(() => {})
})
export default axios
主要是利用的是axios的请求拦截器和相应拦截器
qs无需下载直接引用