1. 前言
在开发小程序时,我们会经常用到request请求,但是每次都写重复的代码,非常繁琐,因此我们需要对请求进行封装。下面我将介绍如何对小程序的request进行封装。
2. request封装步骤
2.1 创建封装文件
首先我们需要在utils文件夹下新建一个request.js文件,用于封装request请求。
touch utils/request.js
2.2 定义请求方法
在request.js文件中,我们需要定义一个名为request的函数,用于发送请求,该函数需要传入一个参数,这个参数是一个对象,其中包含了请求的地址、请求的类型、请求的数据等等。
我们可以使用Promise封装请求,并且可以定义一个全局的统一请求头,比如带上token。下面是一个request函数的示例代码。
const request = (params) => {
// 声明一个Promise对象
return new Promise((resolve, reject) => {
// 获取请求地址
const baseUrl = 'https://api.example.com/'
const url = baseUrl + params.url
// 设置请求头
const header = {
'content-type': 'application/json',
'Authorization': 'Bearer ' + wx.getStorageSync('token') // 假设我们需要携带token
}
// 发送请求
wx.request({
url: url,
method: params.method || 'GET',
data: params.data || {},
header: header,
success: (res) => {
resolve(res.data)
},
fail: (err) => {
reject(err)
}
})
})
}
module.exports = {
request
}
2.3 在页面中使用request方法
在页面中使用时,我们只需要引入request.js,然后直接调用request方法,传入相应的参数,就可以发送请求了,非常方便。
比如,我们要在index.js中发送一个GET请求,获取用户信息,代码如下:
const request = require("../../utils/request.js")
Page({
data: {},
onLoad() {
this.getUserInfo()
},
getUserInfo() {
const url = 'user/info'
request({
url: url,
method: 'GET',
data: {
'id': '123'
}
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
}
})
2.4 封装全局异常处理
在实际开发中,我们需要对异常进行处理,比如提示用户请求失败等信息。
我们可以在request.js中封装全局异常处理函数,用于处理所有的异常情况。下面是一个封装异常处理的示例代码:
const request = (params) => {
return new Promise((resolve, reject) => {
const baseUrl = 'https://api.example.com/'
const url = baseUrl + params.url
const header = {
'content-type': 'application/json',
'Authorization': 'Bearer ' + wx.getStorageSync('token')
}
wx.showLoading({
title: '加载中...',
})
wx.request({
url: url,
method: params.method || 'GET',
data: params.data || {},
header: header,
success: (res) => {
wx.hideLoading()
if (res.statusCode === 200) {
resolve(res.data)
} else {
wx.showToast({
title: '请求失败',
icon: 'none'
})
reject(res)
}
},
fail: (err) => {
wx.hideLoading()
wx.showToast({
title: '请求失败',
icon: 'none'
})
reject(err)
}
})
})
}
module.exports = {
request
}
3. 总结
通过对小程序request请求进行封装,能够大大提高开发效率,减少重复代码的编写,同时也方便处理异常情况,使代码更加规范、易读。