接口变化后,封装接口函数,改变返回内容 #
背景 #
我们的项目升级到了一个更高的版本,后端把一些模块废弃后,有些接口需要整体修改,我这次遇到的就是升级获取服务器时间接口
原本返回的数据格式是:
{
"data": {
"serverTime": 1650626081000
}
}
{
"data": {
"serverTime": 1650626081000
}
}
这次修改,接口变成这样了:
res = {
data: {
isoTimestamp: '2022-04-22T11:17:02.638Z'
}
}
res = {
data: {
isoTimestamp: '2022-04-22T11:17:02.638Z'
}
}
接口的字段变了,而且我看这个接口,本项目的处理方式都是moment.utc(res.data.isoTimestamp).valueOf();
咱也不知道为啥,就跟着做呗
但是如果要修改每个接口的返回处理函数、引入moment,那么工作量还是挺大的,毕竟这个接口好多地方都用到了,那么有没有什么方法可以直接修改一处就能达成目的呢?
观察原来的请求方法
service.servertime = () => {
return requestUtil.ajax(`${Global.getBaseUrl()}/project/servertime`, 'post')
}
service.servertime = () => {
return requestUtil.ajax(`${Global.getBaseUrl()}/project/servertime`, 'post')
}
也就是最后返回了一个promise,那么我们封装一下这个promise就可以了:
import moment from 'moment'
service.servertime = () => {
return new Promise((resolve, reject) => {
requestUtil.ajax(`${Global.getBaseUrl()}/project/now`, 'get').then((res) => {
if (res && res.data) {
// 解析新接口的格式,按照旧接口的格式返回
res.data.serverTime = moment.utc(res.data.isoTimestamp).valueOf()
}
resolve(res) // 返回结果
}).catch((err) => {
reject(err) // 有错返回错误
})
})
}
import moment from 'moment'
service.servertime = () => {
return new Promise((resolve, reject) => {
requestUtil.ajax(`${Global.getBaseUrl()}/project/now`, 'get').then((res) => {
if (res && res.data) {
// 解析新接口的格式,按照旧接口的格式返回
res.data.serverTime = moment.utc(res.data.isoTimestamp).valueOf()
}
resolve(res) // 返回结果
}).catch((err) => {
reject(err) // 有错返回错误
})
})
}