uni-app中调取接口的三种方式

uni-app中调取接口的三种方式与封装uni.request()

一、uni-app中调取接口的三种方式

1、uni.request({})

uni.request({
	url:'/api/getIndexCarousel.jsp',
	method:'get',
	success:res=>{
		console.log(res.data);
		this.carouselData = res.data
	}
})

 2、uni.request({}).then()

uni.request({
	url:'/api/getIndexCarousel.jsp',
	method:'get',
}).then((result)=>{
	let [error,res] = result;
	//result将返回一个数组[error,{NativeData}]
	//NativeData:调取接口后返回的原生数据
	if(res.statusCode === 200){
		this.carouselData = res.data
	}
	if(res.statusCode === 404){
		console.log('请求的接口没有找到');
	}
})
 

3、async/await

async:用在函数定义的前面
async request(){	//函数体;}
await:用在标明了async关键字的函数内部,异步操作的前面。
onLoad() {
	this.request();
},
methods: {
	async request(){
		let result = await uni.request({
			url:'/api/getIndexCarousel.jsp'
		})
		console.log(result)
		let [err,res] = result;
		if(res.statusCode === 200){
			this.carouselData = res.data;
		}
	}
}

二、封装uni.request();

1、创建一个对象,将该对象挂在Vue的原型下

新建@/common/request.js文件

初步写法(仅供参考):

export default {
	request(options){
		uni.request({
			...options,
			success:res=>{
				console.log(res)
			}
		})
	},
	get(url,data={},options={}){
		options.url=url,
		options.data=data,
		options.method='get',
		this.request(options)
	},
	post(url,data={},options={}){
		options.url=url,
		options.data=data,
		options.method='post',
		this.request(options)
	}
}

二次更改: 

export default{
	//封装uni.request():
	request(options){
		return new Promise((resolve,reject)=>{
			//书写异步操作的代码
			uni.request({
				...options,
				success:res=>{
					if(options.native){
						resolve(res)	//调取接口后返回的原生数据	
					}
					if(res.statusCode === 200){
						resolve(res.data)	//异步操作执行成功
					}else{
						console.log('请求的接口没有找到');
						reject(res) 	//异步操作执行失败
					}
				}
			})
		})
	},
	get(url,data={},options={}){
		options.url=url;
		options.data=data;
		options.method='get';
		return this.request(options)
	},
	post(url,data={},options={}){
		options.url=url;
		options.data=data;
		options.method='post';
		return this.request(options)
	}
 
}

2、进入main.js文件 

import request from '@/common/request.js';
Vue.prototype.$Z = request;

例:在任意文件中书写下列代码可以调用。this.$Z.get();

3、在页面中调用

//封装uni.request():
this.$Z.get('/api/getIndexCarousel.jsp',{},{
	native:false
}).then(res=>{
	//异步操作成功
	console.log(res)
}).catch(res=>{
	//异步操作失败
	console.log(res)
}).finally(res=>{
	//异步操作完成
});

uniapp的网络请求方法

CODE

uni.request({
    url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
    data: {
        name: 'name',
        age: 18
    },
    header: {
        'custom-header': 'hello' //自定义请求头信息
    },
    success: function (res) {
        console.log(res.data);
    }
});

uniapp网络请求的get和post

对于 GET 方法,会将数据转换为 query string。例如 { name: ‘name’, age: 18 } 转换后的结果是 name=name&age=18。
对于 POST 方法且 header[‘content-type’] 为 application/json 的数据,会进行 JSON 序列化。
对于 POST 方法且 header[‘content-type’] 为 application/x-www-form-urlencoded 的数据,会将数据转换为 query string。

请求的 header 中 content-type 默认为 application/json

注意 post请求必须加header[‘content-type’]

 

 

 

 

 

 

 

 

 

 

### 基于uni-app开发通讯录App的设计与实现方案 #### 数据获取 在设计基于uni-app的通讯录应用时,数据源的选择至关重要。通过站内引用的内容可以了解到如何调取设备中的本地通讯录功能[^1]。此方法能够帮助开发者快速集成用户的已有联系人信息。 #### UI组件展示 对于前端界面部分,推荐使用`uni-indexed-list`插件来构建带有字母导航条的功能性列表页面[^2]。该插件支持自定义选项参数以及事件监听器绑定操作逻辑。下面是一个简单的模板实例: ```html <template> <view class="container"> <!-- 字母索引导航栏 --> <uni-indexed-list :options="contactList" @click="handleItemClick"></uni-indexed-list> </view> </template> <script> import contactData from '@/data/contact_list.json'; // 导入模拟的数据文件 export default { data() { return { contactList: [] // 初始化为空数组等待填充实际数据 }; }, onLoad() { this.contactList = contactData.map(item => ({ letter: item.letter, items: item.names.split(',') })); }, methods: { handleItemClick(event) { const clickedItemInfo = event.detail; console.info(`用户点击了 ${clickedItemInfo.name}`); } } }; </script> ``` 上述代码片段展示了如何加载并处理外部JSON格式化后的联系人类目结构体,并将其适配至`uni-indexed-list`所需的输入形式之中。 #### 功能扩展——保存新联系人 除了读取现有记录外,还应考虑允许新增加个人资料的能力。这里提供了一种简便的方式去完成这项任务:利用`addPhoneContact()` API接口向手机本机存储添加指定字段值的新成员项[^3]。具体实例如下所示: ```javascript function saveToAddressBook(contactDetails) { uni.addPhoneContact({ ...contactDetails, success(res) { console.debug('成功写入:', res); }, error(errMsg) { alert(`发生错误:${errMsg.errMsg}`); } }); } // 调用示例 saveToAddressBook({ nickName: '张三', firstName: 'San', lastName: 'Zhang', mobilePhoneNumber: '+861390000000' }); ``` 以上函数封装了一个通用型的方法用于执行具体的存盘动作,同时包含了基本的成功提示消息框显示机制。 --- #### 总结说明 综上所述,在采用uni-app框架搭建一款完整的移动平台适用版通信簿程序过程中,需重点关注以下几个方面的工作要点: - **数据采集**:借助官方文档介绍的技术手段抓取目标装置上的原生地址本书籍资源; - **视图渲染**:选用合适的第三方库或者自行编写满足需求规格要求的UI控件样式布局; - **交互行为**:针对特定业务场景下的各种可能触发条件设置相应的响应策略; 最后提醒各位读者朋友注意保护好隐私信息安全哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值