黑马优购小程序之接口优化

1.1 提取接口公共路径

在前面的开发中,网络请求中,url是这么写的:

url: "https://api-hmugo-web.itheima.net/api/public/v1/categories"

如果每个接口都这样的话,就有些繁琐了。在项目中,url公共路径可以提取出来,各业务接口只写配置各自的路径就好了。

修改request/index.js文件,在其中定义baseUrl,并拼接新的请求url,代码如下:

export const request = (params) => {
    return new Promise((resolve, reject) => {
        const baseUrl = "https://api-hmugo-web.itheima.net/api/public/v1";
        wx.request({
            ...params,
            url: baseUrl + params.url,
            success: (result) => {
                resolve(result);
            },
            fail: (error) => {
                reject(error);
            }
        });
    })
}

将业务请求url修改,以category为例:

/* 
    加载分类数据
  */
getCates() {
  request({
    url: "/categories"
  }).then(result => {
    this.Cates = result.data.message;
    // 本地存储数据
    wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
    this.updateUI();
  })
},

这样就完成了接口公共路径的抽取优化。

1.2 使用es7的async

接下来使用asyncawait简化请求代码。

1.2.1 开启增强编译

在这里插入图片描述

1.2.2 修改代码

此处以category/index接口为例,代码修改为:

/* 
加载分类数据
*/
async getCates() {
	const res = await request({ url: "/categories" });
	this.Cates = res.data.message;
	// 本地存储数据
	wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
	this.updateUI();
}

是不是清爽很多~

1.3 简化返回值

每个接口都需要this.Cates = res.data.message做解析,这里做下简化操作,将message直接传入各接口调用处。

修改request/index.js,在success中将message返回,代码如下:

export const request = (params) => {
    return new Promise((resolve, reject) => {
        const baseUrl = "https://api-hmugo-web.itheima.net/api/public/v1";
        wx.request({
            ...params,
            url: baseUrl + params.url,
            success: (result) => {
                resolve(result.data.message);
            },
            fail: (error) => {
                reject(error);
            }
        });
    })
}

修改各接口解析方式,此处以category/index.js为例:

/* 
  加载分类数据
*/
async getCates() {
  const res = await request({ url: "/categories" });
  this.Cates = res;
  // 本地存储数据
  wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
  this.updateUI();
  // request({
  //   url: "/categories"
  // }).then(result => {
  //   this.Cates = result.data.message;
  //   // 本地存储数据
  //   wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
  //   this.updateUI();
  // })
},

如上,完成接口返回值解析的简化。

1.4 小结

本节主要功能知识点如下:

  • 提取接口公共路径
  • 使用es7asyncawait简化请求
  • 简化接口返回值解析
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值