uniapp 响应拦截器
时间: 2023-09-11 13:08:27 浏览: 484
在 UniApp 中,你可以通过使用 Interceptors(拦截器)来实现响应拦截。拦截器允许你在请求返回之前进行一些操作,例如修改响应数据、处理错误等。
首先,你需要在 `main.js` 文件中创建一个全局的请求拦截器:
```javascript
import Vue from 'vue'
import App from '@/App'
Vue.config.productionTip = false
// 创建全局的请求拦截器
uni.addInterceptor('request', {
// 拦截请求之前的操作
request(options, next) {
// 在这里可以对请求参数进行修改
// options 就是请求配置对象
options.header = {
'Authorization': 'Bearer ' + uni.getStorageSync('token')
}
// 继续发送请求
next(options)
}
})
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
```
上述代码中,我们使用 `uni.addInterceptor` 方法创建了一个全局的请求拦截器,并命名为 `'request'`。在拦截器中,我们可以通过修改 `options` 对象来实现对请求参数的修改。在这个例子中,我们在请求头中添加了一个名为 `'Authorization'` 的字段,并将其值设置为用户的 token。
接下来,在接收到响应之后,你可以使用拦截器来对响应数据进行处理。在 `main.js` 文件中继续添加以下代码:
```javascript
// 创建全局的响应拦截器
uni.addInterceptor('response', {
// 拦截响应之后的操作
response(res, next) {
// 在这里可以对响应数据进行处理
// res 就是响应数据
if (res.statusCode === 200) {
// 响应成功的处理逻辑
next(res)
} else {
// 响应失败的处理逻辑
uni.showToast({
title: '请求失败,请重试',
icon: 'none'
})
}
}
})
```
上述代码中,我们创建了一个名为 `'response'` 的响应拦截器,并在拦截器中对响应数据进行处理。在这个例子中,如果响应的状态码为 200,表示请求成功,则继续执行下一步操作。否则,我们显示一个错误提示。
通过以上步骤,你就可以在 UniApp 中实现请求的拦截和响应的处理了。希望对你有所帮助!如果还有其他问题,请随时提问。
阅读全文