当前位置:   article > 正文

uni-app中统一调用接口服务_uniapp小程序中怎么实现每个页面都需要调用同一个接口

uniapp小程序中怎么实现每个页面都需要调用同一个接口

基础调用使用Fly

1.request.js

uni-app自带Fly,通用模块

// 目前没有针对uni的Fly版本,使用wx版本没有问题
// #ifdef APP-PLUS
import Fly from 'flyio/dist/npm/wx'
// #endif
// #ifdef MP-WEIXIN
import Fly from 'flyio/dist/npm/wx'
// #endif


const request = new Fly()

const errorPrompt = (err) => {
	// #ifdef MP-WEIXIN
	wx.showToast({
		title: err.message || 'fetch data error.',
		icon: 'none'
	})
	// #endif
	// #ifdef APP-PLUS
	uni.showToast({
		title: err.message || 'fetch data error.',
		icon: 'none'
	})
	// #endif
}

request.interceptors.request.use((request) => {
	// wx.showNavigationBarLoading()
	uni.showLoading({
		title: '加载中'
	});
	return request
})

request.interceptors.response.use((response, promise) => {
	// wx.hideNavigationBarLoading()
	uni.hideLoading();
	// if (!(response && response.data && response.data.res === 0)) {
	//   errorPrompt(response)
	// }
	return promise.resolve(response.data)
}, (err, promise) => {
	// wx.hideNavigationBarLoading()
	uni.hideLoading();

	errorPrompt(err)
	return promise.reject(err)
})

export default request

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
2.store.js

写调用接口的方法,配置具体url,使用export导出方法

import request from 'common/request'
// import Fly from 'flyio/dist/npm/wx';
// var request = new Fly();


const getProducts = async function (page=1) {

	let url = `https://api.beidian.com/mroute.html?method=beidian.h5.shop.product.list&page=${page}&shop_id=682731`;
  
  console.log(url);
  
	const data = await request.get(url);
	if (data.has_more) {
		return data.shop_products;
	} else {
		return false;
	}
}


const search = async function(keywords, page=1) {

	console.log("keywords:" + keywords)
	//https://api.beidian.com/mroute.html?method=beidian.search.item.list&keyword=%E7%94%B5%E8%84%91&sort=hot&page_size=20&page=3
	keywords = encodeURI(keywords);
	let url =
		`https://api.beidian.com/mroute.html?method=beidian.search.item.list&keyword=${keywords}&sort=hot&page_size=20&page=${page}`;
    
	console.log(url);
	const data = await request.get(url);

	// console.log('data:' + JSON.stringify(data));
	// console.log(data.has_more)

	if (data.has_more) {
		return data.items;
	} else {
		console.log("没有数据了!")
		return false;
	}
}

// app/store应用的服务程序
module.exports= {
	getProducts,
  search,
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
3.页面调用

引入store.js,调用其中的getProducts方法

<script>
	import service from 'service/store.js';
	export default {
		data: {
            productList:[ ]
    },
		async onLoad() {
			// 调用方
			const productList = await service.getProducts(1);
            this.productList=productList;
			console.log(JSON.stringify(productList));
		}
	}
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/231242
推荐阅读
相关标签
  

闽ICP备14008679号