最近在写微信小程序的项目,发现一些比以前写小程序更好的封装方法。
之前封装
之前封装请求都是直接把请求的方法写到utils.js中. 请求参考

使用请求需要很多代码,而且后续不好修改请求地址

优化封装
项目下新建一个request文件夹

在request中新建 api.js fetch.js request.js

api.js
var baseUrl = "http://test.com:8001";
var homeApi = baseUrl + "/index/index";
var LoginApi = baseUrl + "/auth/loginByWeb";
var CatoryApi = baseUrl + "/catalog/index";
var CategoryCurrentApi = baseUrl + "/catalog/current";
var PopupApi = baseUrl + "/search/index";
var SearchingApi = baseUrl + "/search/helper";
var GoodsSearchApi = baseUrl + "/goods/list";
var ClearHistoryApi = baseUrl + "/search/clearhistory";
var BrandDetailApi = baseUrl + "/brand/detail";
var GoodsCategoryApi = baseUrl + "/goods/category";
var ChennelAboutGoodsApi = baseUrl + "/goods/list";
module.exports = { homeApi, LoginApi, CatoryApi, CategoryCurrentApi, PopupApi, SearchingApi, GoodsSearchApi, ClearHistoryApi, BrandDetailApi, GoodsCategoryApi, ChennelAboutGoodsApi };
|
request.js
封装wx.request
function request(params) { return new Promise(function (resolve, reject) { wx.hideLoading(); wx.showLoading(); wx.request({ url: params.url, data: params.data || {}, header: params.header || {}, method: params.method || 'GET', dataType: 'json', success: function(res) { wx.hideLoading(); resolve(res.data) }, fail: function(err) { wx.hideLoading(); wx.showToast({ title: err || '请求错误!', mask: true }) reject(err) } }) }) }
module.exports = { requestApi: request }
|
fetch.js
var api = require("./api.js"); var request = require("./request.js");
function getHome() { return request.requestApi({ url: api.homeApi, }); }
function LoginFn(params) { return request.requestApi({ url: api.LoginApi, data: params, header: { "content-type": "application/x-www-form-urlencoded", }, method: "POST", }); }
function getCatory() { return request.requestApi({ url: api.CatoryApi, }); }
function CategoryCurrentFn(params) { return request.requestApi({ url: api.CategoryCurrentApi, data: params, }); }
function PopupDataFn() { return request.requestApi({ url: api.PopupApi, }); }
function SearchingFn(params) { return request.requestApi({ url: api.SearchingApi, data: params, }); }
function GoodsSearchFn(params) { return request.requestApi({ url: api.GoodsSearchApi, data: params, }); }
function ClearHistoryFn(params) { return request.requestApi({ url: api.ClearHistoryApi, data: params, header: { "content-type": "application/x-www-form-urlencoded", }, method: "POST", }); }
function BrandDetailFn(params){ return request.requestApi({ url: api.BrandDetailApi, data: params }); }
function GoodsCategoryFn(params){ return request.requestApi({ url: api.GoodsCategoryApi, data: params }); }
function ChennelAboutGoodsFn(params){ return request.requestApi({ url: api.ChennelAboutGoodsApi, data: params }); }
module.exports = { getHome, LoginFn, getCatory, CategoryCurrentFn, PopupDataFn, SearchingFn, GoodsSearchFn, ClearHistoryFn, BrandDetailFn, GoodsCategoryFn, ChennelAboutGoodsFn };
|
使用请求 需要导入对应的fetch即可
const {getHome} = require("../../request/fetch")
getHomeData(){ getHome().then(res=>{ console.log(res); } }
|