微信小程序学习

之前学过一点基础的,现在调一下api

网络部分

相关信息

小程序/服务器架构是CS架构

小程序网络API在发起网络请求时使用JSON格式的文本进行数据交换

服务器域名配置

这里的服务器可以是你自己的,也可以是wechat或者其他第三方的.

选择【设置】—【开发设置】—【服务器域名】进行添加或修改

image-20211103193519336

  • 域名只支持 https (request、uploadFile、downloadFile) 和 wss (connectSocket) 协议;

  • 域名不能使用 IP 地址或 localhost;域名必须经过 ICP 备案;

  • 出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调

    用。开发者应将 appsecret 保存到后台服务器中,通过服务器使用 appsecret 获取 accesstoken,并调用相关 API;每类接口分别可以配置最多 20 个域名。

且配置次数每个月有限制

自己的服务器还要有HTTP证书等,总之用这个最好还是用微信自己的或者第三方的

小程序对服务器端没有软件和语言的限制条件,用户可以根据自己实际情况选择Apache、Ngnix、Tomcat等任意一款服务器软件进行安装部署,以及选用PHP、Node.js、J2EE等任意一种语言进行后端开发。

练习

这里说一下临时部署,就是在本地电脑上部署,在服务器其实类似

可以用Apache,ngnix服务器软件搭配php,nodejs等进行开发

可以安装phpstudy学习,挺好的软件

有php,Apache,ngnix,mysql数据库集成

image-20211103194554124

这样就可以本地测试了.

发起请求

小程序使用wx.request(OBJECT) 发起网络请求

参数名类型必填说明
urlString开发者或第三方服务器接口地址
dataObject/String/ArrayBuffer请求的参数
headerObject设置请求的 header,header 中不能设置 Referer(其中content-type 默认为 ‘application/json’)
methodString有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT(默认值是GET)
dataTypeString默认值为json。如果设为json,会尝试对返回的数据做一次 JSON.parse
responseTypeString设置响应的数据类型。合法值:text、arraybuffer。默认值为text。最低版本1.7.0
successFunction收到服务器成功返回的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都会执行)

success返回参数

参数类型说明
dataObject/String/ArrayBuffer开发者服务器返回的数据
statusCodeNumber开发者服务器返回的HTTP 状态码
headerObject开发者服务器返回的HTTP Response Header,最低版本1.2.0
1
2
3
4
5
6
7
8
9
10
11
wx.request({
url: 'https://test.com/', //仅为示例,并非真实的接口地址
data: {
x: '123' , //数据的key和value由开发者自定义
y: '456' //这里的数据仅为示例
},
success: function(res) {
console.log(res.data) //返回的数据
}
})

最终发送给服务器的data数据是String类型,如果传入的data是其他类型也会被转换成String

  • 对于 GET 方法的数据,会将数据转换成 query string(key1=value1&key2=value2…);
  • 对于 POST 方法且 header[‘content-type’] 为 application/json 的数据,会对数据进行 JSON 序列化;
  • 对于 POST 方法且 header[‘content-type’] 为 application/x-www-form-urlencoded 的数据,会将数据转换成 query string (key1=value1&key2=value2…)

中断请求

wx.request(OBJECT)接口返回一个requestTask对象,通过该对象的abort方法可以中断请求任务。requestTask对象的方法如表所示。

1
2
3
4
5
6
7
8
9
10
11
12
const requestTask = wx.request({
url: 'https://test.com/', //仅为示例,并非真实的接口地址
data: {
x: '123' , //数据的key和value由开发者自定义
y: '456' //这里的数据仅为示例
},
success: function(res) {
console.log(res.data)
}
})
requestTask.abort() // 取消请求任务

文件上传

上传请求

小程序使用wx.uploadFile(OBJECT)可以将本地资源上传到开发者服务器,上传时将从客户端发起一个 HTTPS POST请求到服务器,其中content-type为multipart/form-data。
该接口的OBJECT参数说明如表所示。

参数类型必填说明
urlString开发者服务器 url
filePathString要上传文件资源的路径
nameString文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
headerObjectHTTP 请求 Header, header 中不能设置 Referer
formDataObjectHTTP 请求中其他额外的 form data
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都会执行)

成功时返回的数据

dataString开发者服务器返回的数据
statusCodeNumber开发者服务器返回的 HTTP 状态码

该接口与其他接口一起使用

页面通过wx.chooseImage接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
wx.chooseImage({
success: function(res) {
var tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData:{
'user': 'test'
},
success: function(res){
var data = res.data
}
})
}
})

上传任务对象

wx.uploadFile(OBJECT)接口返回一个uploadTask对象,通过该对象可监听文件上传进度变化事件.

方法参数说明最低版本
onProgressUpdatecallback监听上传进度变化1.4.0
abort中断上传任务1.4.0

onProgressUpdate返回参数

参数类型说明
progressNumber上传进度百分比
totalBytesSentNumber已经上传的数据长度,单位 Bytes
totalBytesExpectedToSendNumber预期需要上传的数据总长度,单位 Bytes
1
2
3
4
5
6
7
8
9
const uploadTask = wx.uploadFile({

})
uploadTask.onProgressUpdate((res) => {
console.log('上传进度', res.progress)
console.log('已经上传的数据长度', res.totalBytesSent)
console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
})
uploadTask.abort() // 取消上传任务

文件下载

使用wx.downloadFile(OBJECT)可以从服务器下载文件资源到本地,OBJECT参数说明如表所示。

参数类型必填说明
urlString下载资源的 url
headerObjectHTTP 请求 Header,header 中不能设置 Referer
successFunction下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: ‘文件的临时路径’}
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都执行)

success返回参数

参数类型说明
tempFilePathString临时文件路径,下载后的文件会存储到一个临时文件
statusCodeNumber开发者服务器返回的 HTTP 状态码

下载文件的原理是客户端直接发起一个HTTP GET请求,返回文件的本地临时路径。需要注意的是,本地临时路径文件在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用 wx.saveFile才能在小程序下次启动时访问得到。

1
2
3
4
5
6
7
8
9
10
wx.downloadFile({
url: 'https://example.com/audio/123', //仅为示例,并非真实的资源
success: function(res) {
// 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调
if (res.statusCode === 200) {
console.log(res.tempFilePath) //文件临时路径地址
}
}
})

下载任务对象

wx.downloadFile(OBJECT)返回一个downloadTask对象,通过downloadTask,可监听下载进度变化事件,以及取消下载任务。该接口从基础库 1.4.0 开始支持,低版本需做兼容处理。downloadTask对象的方法列表如表所示

方法参数说明最低版本
onProgressUpdatecallback监听下载进度变化1.4.0
abort中断下载任务1.4.0

onProgressUpdate返回参数说明

progressNumber下载进度百分比
totalBytesWrittenNumber已经下载的数据长度,单位 Bytes
totalBytesExpectedToWriteNumber预期需要下载的数据总长度,单位 Bytes
1
2
3
4
5
6
7
8
9
10
const downloadTask = wx.downloadFile({

})
downloadTask.onProgressUpdate((res) => {
console.log('下载进度', res.progress)
console.log('已经下载的数据长度', res.totalBytesWritten)
console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)
})
downloadTask.abort() // 取消下载任务

图片管理

小程序使用wx.chooseImage(OBJECT)从本地相册选择图片或使用相机拍照获得图片,图片将被存放在设备的临时路径,在小程序本次启动期间可以正常使用。

选择图片

参数类型必填说明
countNumber最多可以选择的图片张数,默认9
sizeTypeStringArrayoriginal 原图,compressed 压缩图,默认二者都有
sourceTypeStringArrayalbum 从相册选图,camera 使用相机,默认二者都有
successFunction成功则返回图片的本地文件路径列表 tempFilePaths
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都执行)

success返回参数

tempFilePaths:StringArray类型,表示图片的本地文件路径列表;
tempFiles:ObjectArray类型,表示图片的本地文件列表,每项是一个File对象,最低版本1.2.0开始支持

File 对象结构说明如下:
path:String类型,表示本地文件路径;
size:Number类型,表示本地文件大小,单位:B。
需要注意是,wx.chooseImage获得的图片仅能在小程序启动期间临时使用。如需持久保存,需在主动调用 wx.saveFile进行保存,在小程序下次启动时才能访问得到。

预览图片

小程序使用wx.previewImage(OBJECT) 预览图片,OBJECT参数说明如表所示

参数类型必填说明
currentString当前显示图片的链接,不填则默认为 urls 的第一张
urlsStringArray需要预览的图片链接列表
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都执行)

获取图片信息

wx.getImageInfo(OBJECT) 获取图片信息

参数类型必填说明
srcString图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都执行)

success返回参数

参数类型说明最低版本
widthNumber图片宽度,单位px
heightNumber图片高度,单位px
pathString返回图片的本地路径
orientationString返回图片的方向1.9.90
typeString返回图片的格式1.9.90

orientation参数

枚举值说明
up默认
down180度旋转
left逆时针旋转90度
right顺时针旋转90度
up-mirrored同up,但水平翻转
down-mirrored同down,但水平翻转
left-mirrored同left,但垂直翻转
right-mirrored同right,但垂直翻转

保存图像

小程序使用wx.saveImageToPhotosAlbum(OBJECT) 保存图片到系统相册

需要用户授权 scope.writePhotosAlbum

参数名类型必填说明
filePathString图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
successFunction接口调用成功的回调函数,返回String类型参数errMsg,表示调用结果
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功与否都执行)

录音管理

小程序使用wx.getRecorderManager()获取全局唯一的录音管理器 recorderManager

方法参数说明
startoptions开始录音
pause暂停录音
resume继续录音
stop停止录音
onStartcallback录音开始事件
onPausecallback录音暂停事件
onStopcallback录音停止事件,返回String类型参数tempFilePath表示录音文件的临时路径
onFrameRecordedcallback已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了frameSize,则会回调此事件。
onErrorcallback录音错误事件,返回String类型参数errMsg表示错误信息

start(options)方法参数

durationNumber指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟)1.6.0
sampleRateNumber采样率,有效值 8000/16000/441001.6.0
numberOfChannelsNumber录音通道数,有效值 1/21.6.0
encodeBitRateNumber编码码率,有效值见下表格1.6.0
formatString音频格式,有效值 aac/mp31.6.0
frameSizeNumber指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式1.6.0
audioSourceString指定音频输入源,默认值为 ‘auto’2.1.0
-------------本文结束感谢您的阅读-------------
感谢阅读.

欢迎关注我的其它发布渠道