uniapp如何实现请求拦截和响应拦截
时间: 2023-12-09 19:03:36 浏览: 76
在 `uni-app` 中,可以使用 `uni.request()` 方法来发送请求并进行拦截处理。
请求拦截可以通过在调用 `uni.request()` 时传入 `beforeSend` 参数来实现,该参数是一个函数,可以在发送请求前对请求参数进行修改或添加请求头等操作。例如:
```javascript
uni.request({
url: 'http://www.example.com/api',
method: 'POST',
data: {
name: 'John',
age: 25
},
beforeSend: function(request) {
// 在请求头中添加 token
request.header['Authorization'] = 'Bearer ' + token
},
success: function(res) {
console.log(res.data)
}
})
```
响应拦截可以通过在调用 `uni.request()` 时传入 `complete` 参数来实现,该参数是一个函数,可以在请求完成后对响应结果进行处理。例如:
```javascript
uni.request({
url: 'http://www.example.com/api',
method: 'GET',
complete: function(res) {
if (res.statusCode === 401) {
// token 过期或无效,重新登录
uni.navigateTo({ url: '/pages/login/login' })
}
},
success: function(res) {
console.log(res.data)
}
})
```
需要注意的是,在 `complete` 函数中对响应结果进行的任何修改都不会影响 `success` 函数中的结果,因为 `success` 函数是在 `complete` 函数之前执行的。如果需要对响应结果进行修改,可以将修改后的结果存储到全局变量中,在 `success` 函数中使用。
阅读全文