请求方法示例
- 在src/utils/http.js 导出了5个函数并将其插入wx全局变量
- 分别是
wx.$http wx.$get wx.$post wx.$put wx.$delete
wx.$http只是对wx.request进一层的封装
- 其它4个方法 只是
wx.$http的快捷方式
wx.request 原来的参数都支持,下面讲新增的参数
| 属性 |符号 | 类型 | 默认值 | 必填 | 说明
| --- | --- | --- | --- | --- | --- |
| dealy | | Number | 1000 | 否 | 在此时间内,请求还没回来的话,就显示加载中动画,单位ms.mask为true时 dealy为0
| mask | ^ | Boolean | false | 否 | showLoading 是否显示透明蒙层,防止触摸穿透
| onCatch | @ | Boolean|Function | false | 否 | 是否监听Promise.catch函数,当onCatch是一个函数时可以不传@符号
| validateToken | ~ | Boolean | true | 否 | 是否验证token(为true时获取不到token自动跳转至登录页面)
| confirmBack | < | Boolean | false | 否 | 显示错误信息时,点击确认是否返回上一级页面
| showLoading | ! | Boolean | true | 否 | 发送请求前是否显示加载中动画
| hideLoading | !! | Boolean | true | 否 | 接口请求完是否关闭加载中动画
| displayErrorMessage| # | Boolean | true | 否 | 状态码不为200时,是否显示错误message
代码示例
wx.$http({
url: 'v1/book/create',
method: 'POST',
data: {
bookName: '百年孤独',
author: '马尔克斯'
},
header: {
},
dealy: 1000,
mask: false,
onCatch: false,
validateToken: true,
confirmBack: false,
showLoading: true,
hideLoading: true,
displayErrorMessage: true
}).then(data => {
}).catch(response => {
console.log(response)
response.options
if(response.error) {
} else {
}
})
另一种写法 async/await 也是个人比较推荐的写法
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const { data } = await wx.$post('v1/books', params)
}
}
}
- 如上写法是不是简洁多了, 但是还有一个问题, 假设我想设置
mask onCatch validateToken 等参数呢?
- 别担心,可以使用上面表格描述的符号代替
- 符号取值与默认值相反
- 例如:如果不想校验
token(默认为true校验token),则可以使用~代替
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const { data } = await wx.$post('~v1/books', params)
}
}
}
- 可以组合使用(不分前后),例如不校验
token 和 不显示加载中动画,可以这样写
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const { data } = await wx.$post('~!v1/books', params)
}
}
}
- 如果需要传
header相关参数
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const { data } = await wx.$post('~!v1/books', params, { })
}
}
}
- 如果需要监听响应失败(这里指的是状态码不为
200 都算响应失败)
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const onCatch = (response) => {
console.log(response)
response.options
if(response.error) {
} else {
}
}
const { data } = await wx.$post('~!v1/books', params, { }, onCatch)
}
}
}
- 第三个参数如果是函数,会被处理成第四个参数
onCatch
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const onCatch = (response) => {
console.log(response)
response.options
if(response.error) {
} else {
}
}
const { data } = await wx.$post('~!v1/books', params, onCatch)
}
}
}
wx.$get会把params转成url参数,如下params会自动转成 v1/books?page=1&size=10
export default {
methods: {
async getBooks() {
const params = {
page: 1,
size: 10
}
const { data } = await wx.$get('~!v1/books', params)
}
}
}