微信小程序uniapp结合promise封装请求api,把request进一步封装。

本文介绍了一个小程序中网络请求的封装方法,包括创建utils文件夹下的index.js文件来封装请求函数,并在app/index.js中导入使用这些函数以获取数据。此外还展示了如何在页面中实际调用这些函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、第一步在 根目录 建一个 utils 文件 > index.js 文件,插入以下代码。

const basUrl = 'https://api-hmugo-web.itheima.net/api/' // 设置公共的域名
const request = (params)=>{
	uni.showLoading({ // 显示加载中  微信 就把 uni 改成 wx
		title:'加载中'
	})
	// 我们搭配 Promise 进一步封装
	return new Promise((resolve,reject)=>{
		// Promise 一种异步编程的解决方案 支持链式调用 可以将异步操作队列化 
		// Promise 状态 Pending --> Fulfilled 或者 Pending --> Rejected,Fulfilled 和 Rejected 是最终状态,不可以进行第二次修改;
		uni.request({
			url:basUrl + params.url, // 拼接 params 传过来的 url
			data:params.data, // 拼接 params 传过来的 参数
			method:params.method || 'GET',  //  传过来的 请求方式 默认 get
			success:(res)=>{ // 成功的回调函数
				resolve(res.data)  // 成功了  resolve 返回 就可以 .then 调用了
			},
			fail:reject, // 失败 .catch可以捕获到
			complete() { // 接口调用结束的回调函数(调用成功、失败都会执行)	
				uni.hideLoading()
			},
			// 对于 POST 方法且 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换成 query string
			header:{
				'content-type':'application/x-www-form-urlencoded'
			}
		})
	})
}
export default request // es6 模块化导出 

2、建一个 app 文件 > index.js

import request from "../utils/request.js" // 引入

module.exports = { // 导出
	// 获取轮播图的数据
    getBanner: async ()=>{
		return await request({url:'public/v1/home/swiperdata'})
	},

	// 详情请求 带参数的
	getDetail:async(params)=>{
		return await request({url:'public/v1/goods/detail',data:params})
	},

	
}

 3、在页面使用就可以了

	import { getDetail } from '../../app/index.js'
		
	onLoad(id) {
		getDetail({
			goods_id: id.id
		}).then(res => {
			console.log(res.message)
			this.obj = res.message
		})
	},

手撸不易 _s-z-h

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有两把刷子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值