探讨uniapp的网络通信问题

uni-app 中有很多原生的 API,其中我们经常会用到的肯定有:uni.request(OBJECT)

在这里插入图片描述
在这里插入图片描述
method 有效值

注意:method有效值必须大写,每个平台支持的method有效值不同,详细见下表。
在这里插入图片描述
success 返回参数说明
在这里插入图片描述

data 数据说明

最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String。转换规则如下:

  • 对于 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。
	uni.request({
			url: 'https://api.uomg.com/api/rand.qinghua', //仅为示例,并非真实接口地址。
			data: {
				text: 'uni.request'
			},
			success: (res) => {
				console.log(res.data);
			}
		});

在这里插入图片描述

返回值
如果希望返回一个 requestTask 对象,需要至少传入 success / fail / complete 参数中的一个。例如:

	click() {
		let res = uni.request({
			url: 'https://api.uomg.com/api/rand.qinghua', //仅为示例,并非真实接口地址。
			data: {
				text: 'uni.request'
			},
			success(res) {
				
			}
		});
		console.log(res);
	}

通过 requestTask,可中断请求任务。
在这里插入图片描述

const requestTask = uni.request({
	url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
	data: {
        name: 'name',
        age: 18
	},
	success: function(res) {
		console.log(res.data);
	}
});

// 中断请求任务
requestTask.abort();

如果没有传入 success / fail / complete 参数,则会返回封装后的 Promise 对象:Promise 封装

	click() {
		let res = uni.request({
			url: 'https://api.uomg.com/api/rand.qinghua', //仅为示例,并非真实接口地址。
			data: {
				text: 'uni.request'
			}
		});
		console.log(res);
	}

Tips

  • 请求的 header 中 content-type 默认为 application/json。
  • 避免在 header 中使用中文,或者使用 encodeURIComponent 进行编码,否则在百度小程序报错。
  • 网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout。
    在这里插入图片描述
  • H5 端本地调试需注意跨域问题,参考:调试跨域问题解决方案【自带的浏览器】

在这里插入图片描述文章来源地址https://uudwc.com/A/X3vn5

原文地址:https://blog.csdn.net/zs18753479279/article/details/132268579

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年08月15日 22:57
Uniapp当中使用腾讯位置路线规划插件保姆教学
下一篇 2023年08月15日 22:58