微信小程序API_请求服务器数据API_文件上传与下载API

时间:2024-09-29 21:26:13

>请求服务器数据API

        >小程序/服务器架构

                >小程序和服务器通信的架构也可以称为C/S 架构

                >请求过程:

                        >小程序先向服务器发起网络请求

                        >服务器收到请求后执行相关代码处理请求

                        >处理完毕后服务器向小程序回复并返回数据

                        >小程序相关接口将回调success()函数并对拿到的 数据进行处理

        注意事项:

                >默认超时时间和最大超时时间都是60秒

                >所涉及的三种接口API: request、uploadFile、downloadFile最大并发限制是10个

                >小程序进入后台运行后,如果在5s内网络请求没有结束,会回调错误信息fail interrupted;在回到后台之前,网络请求接口调用都无法调用

        >服务器域名配置

                >每一个小程序在与指定域名进行网络通信前都必须将该域名添加到管理员后台白名单中

                >配置方法:登录,点击左侧“开发”,在“开发设置”下的“服务器域名”中配置域名

        >域名配置注意事项:

                >开发者可将填入自己或第三方的域名地址

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

                >域名不能使用IP地址或localhost

                >域名必须经过ICP备案

                >每类接口分别可以配置最多20个域名

                >域名每个月只可以申请修改5次

        >跳过域名校验

                >如果开发者暂时无法登记有效域名,可以在开发和测试环节暂时跳过域名校验

                >方法:点击开发者工具中的“详情”按钮,点击“本地设置”设置选项卡,勾选“不校验合法域名”项

        >临时服务器部署

                >通过以下软件实现:

                        >phpStudy

                        >xampp

                        >wamp

                        >

                >访问方式(与前端开发的Tomcat服务器类似)

                        >如:http://localhost/ 或 http://127.0.0.1/

        >发起请求

                >小程序使用(OBJECT)发起网络请求

参数说明
属性 类型 默认值 必填 说明
url string 开发者服务器接口地址
data string/object/ArrayBuffer 请求的参数
header Object 设置请求的 header,header 中不能设置 Referer。content-type默认为 application/json
method string GET HTTP 请求方法
dataType string json 返回的数据格式
responseType string text 响应的数据类型
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败 都会执行)

        示例代码:

  1. wx.request({
  2. url:'/',
  3. data:{
  4. x:'123',
  5. y:'456'
  6. },
  7. success:function(res){
  8. console.log()
  9. }
  10. })

>文件上传与下载API

        >文件传输主要包含文件的上传和下载功能

        >其中:

                >文件上传功能需要配合开发者服务器使用

                >文件下载功能使用开发者服务器或第三方服务器均可

        >文件上传

                >小程序使用(OBJECT)可以将本地资源上传到开发者服务器

                >上传时将从客户端发起一个HTTPS POST请求到服务器

OBJECT参数
属性 类型 必填 说明
url string 开发者服务器接口地址
filePath string 要上传文件资源的路径
name string 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
header Object HTTP 请求 Header,Header 中不能设置 Referer
fromData Object HTTP 请求中其他额外的 form data
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会 执行)

        示例代码:

  1. //.wxml
  2. <view class='page-body'>
  3. <view class='demo-box'>
  4. <view class='title'>文件上传演示</view>
  5. <image wx:if='{{src}}' src='{{src}}' mode='widthFix'></image>
  6. <button bindtap="chooseImage">选择文件</button>
  7. <button type="primary" bindtap="uploadFile">开始上传</button>
  8. </view>
  9. </view>
  10. //.js
  11. Page({
  12. data: {
  13. src: '' //上传图片的路径地址
  14. },
  15. chooseImage: function() {
  16. var that = this
  17. ({
  18. count: 1, // 默认9
  19. sizeType: ['original', 'compressed'],
  20. //可以指定是原图还是压缩图,默认二者都有
  21. sourceType: ['album', 'camera'],
  22. // 可以指定来源是相册还是相机,默认二者都有
  23. success: function(res) {
  24. let src = [0]
  25. ({
  26. src: src
  27. })
  28. }
  29. })
  30. },
  31. uploadFile: function() {
  32. var that = this
  33. let src = this.data.src
  34. if (src == '') {
  35. ({
  36. title: '请先选择文件!',
  37. icon: 'none'
  38. })
  39. }else {
  40. //发起文件上传请求
  41. var uploadTask = ({
  42. url: 'http://localhost/miniDemo/',
  43. //可以替换为开发者自己的服务器地址
  44. filePath: src,
  45. name: 'file',
  46. success: function(res) {
  47. (res)
  48. ({
  49. title: res.data
  50. })
  51. }
  52. })
  53. ((res)=> {
  54. ('上传进度', )
  55. ('已经上传的数据长度', )
  56. ('预期需要上传的数据总长度', )
  57. })
  58. }
  59. }
  60. })

        >文件下载

                >小程序使用(OBJECT)可 以从服务器下载文件资源到本地

OBJECT参数
属性 类型 必填 说明
url string 下载资源的 url
header Object HTTP 请求 Header,Header 中不能设置 Referer
filePath string 指定文件下载后存储的路径
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会 执行)

        示例代码:

  1. //.wxml
  2. <view class='page-body'>
  3. <view class='demo-box'>
  4. <view class= ' title ' >文件下载演示</view>
  5. <block wx:if='{{isDownload}}'>
  6. <image mode='widthFix' src='{{src}}'></image>
  7. <button bindtap="reset">重置</button>
  8. </block>
  9. <button wx:else type="primary"bindtap="download">点击此处下载图片</button>
  10. </view>
  11. </view>
  12. //.js
  13. Page({
  14. data: {
  15. isDownload: false
  16. },
  17. download: function () {
  18. var that = this
  19. //开始下载
  20. var downloadTask = ({
  21. url: '/images/20180821/tooopen_sl_135625562533875.jpg',
  22. //用户可自行更换
  23. success: function (res) {
  24. // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
  25. if ( === 200) {
  26. let src =
  27. //文件临时路径地址
  28. ({
  29. src: src,
  30. isDownload: true
  31. })
  32. }
  33. }
  34. })
  35. //任务对象监听下载进度
  36. ((res) => {
  37. ('下载进度',)
  38. ('已经下载的数据长度',)
  39. ('预期需要下载的数据总长度', )
  40. })
  41. },
  42. //清空下载图片
  43. reset: function () {
  44. ({
  45. src: '',
  46. isDownload: false
  47. })
  48. }
  49. })

...持续学习完善中。


#学无止境#