uni-app——网络API

发布于:2025-03-21 ⋅ 阅读:(19) ⋅ 点赞:(0)

uni-app 网络API

在 uni-app 开发中,网络请求是获取数据与和服务器交互的重要手段。以下介绍 uni-app 中常见的网络 API,包括发起请求、上传和下载以及 WebSocket、UDP 通信等方面。

发起请求

在 uni-app 里,使用uni.request(OBJECT)来发起网络请求,它类似于传统 Web 开发中的 AJAX,在实际开发中主要用于从服务器端接口获取数据,其使用方式和 jQuery 的 AJAX 较为相似。下面详细介绍其参数:

  • url(必填):这是开发者服务器接口的地址,明确请求的目标位置。

  • data:用于设置请求参数,这些参数会被发送到服务器。

  • header:用来设置请求的头部信息,比如设置认证信息等。

  • method:指定请求的方法,默认是 GET。

  • timeout:设置请求的超时时间,避免请求长时间无响应。

  • dataType:若设置为 json,uni-app 会自动尝试对返回的数据进行 JSON.parse 处理,方便后续使用数据。

  • sslVerify:用于验证 SSL 证书,保障请求的安全性。

  • withCredentials:决定跨域请求时是否携带凭证。

  • firstlpv4:在 DNS 解析时优先使用 IPV4。

  • success:当成功收到开发者服务器返回的数据时,会触发这个回调函数。

  • fail:一旦接口调用失败,就会进入这个回调函数。

  • complete:无论接口调用成功与否,结束时都会执行此回调函数。

代码示例

假设我们要从服务器获取用户列表数据,接口地址为https://example.com/api/users,示例代码如下:

uni.request({
    url: 'https://example.com/api/users',
    method: 'GET',
    data: {
        page: 1,
        limit: 10
    },
    header: {
        'Content-Type': 'application/json'
    },
    success: function (res) {
        console.log('请求成功', res.data);
    },
    fail: function (err) {
        console.log('请求失败', err);
    },
    complete: function () {
        console.log('请求结束');
    }
});

关于 data 的转换规则

发送给服务器的 data 必须是 String 类型,如果不是 String 类型,会按照特定规则强制转换为 String:

  • GET 方法:数据会被转换为查询字符串。例如{name:‘name’,age:‘18’}会转换为name=name&age=18。

  • POST 方法

    • 当header[‘content-type’]为application/json时,数据会进行 JSON 序列化。
    • 当header[‘content-type’]为application/x-www-form-urlencoded时,数据会被转换为查询字符串。

method 的取值

method可取值有GET、POST、PUT、DELETE、CONNECT、HEAD、OPTIONS、TRACE。在实际开发中,常用且兼容性较好的是GET和POST方法。GET一般用于获取数据,POST常用于向服务器提交数据。

success 回调参数说明

  • data:类型可以是Object、String或者ArrayBuffer,这是开发者服务器返回的数据内容。

  • statusCode:是一个Number类型,代表开发者服务器返回的 HTTP 状态码,比如常见的 200 表示成功,404 表示未找到资源等。

  • header:是一个Object,包含开发者服务器返回的 HTTP Response Header 信息。

  • cookies:是一个字符串数组Array.,里面存储着开发者服务器返回的 cookies。

上传文件

使用uni.uploadFile(OBJECT)可以将本地资源上传到开发者服务器中。这个操作本质上是由客户端发起一个 POST 请求,且其content-type为multipart/form-data。下面介绍其参数:

  • url(必填):这是开发者服务器的 URL,明确上传的目标服务器地址。

  • files(必填):这是上传的文件列表。当使用files时,filePath和name这两个参数将不生效。

  • fielType:指定文件类型,可取值为image、video、audio等。

  • file:要上传的具体文件对象。

  • filePath(必填):上传文件在本地的资源路径。

  • name:文件在服务器端对应的 key。

  • header:设置 HTTP 请求的 header 信息。

  • timeout:设置上传请求的超时时间。

  • formData:用于设置 HTTP 请求中的其他表单数据。

  • successfailcomplete:这三个回调函数分别在上传成功、失败以及结束时触发,方便开发者进行相应处理。

代码示例

假设要将本地的一张图片上传到服务器,服务器接口地址为https://example.com/api/upload,示例代码如下:

const filePath = '/storage/emulated/0/DCIM/Camera/IMG_20230101.jpg';
uni.uploadFile({
    url: 'https://example.com/api/upload',
    filePath: filePath,
    name: 'file',
    formData: {
        'user_id': '12345'
    },
    success: function (res) {
        console.log('上传成功', res.data);
    },
    fail: function (err) {
        console.log('上传失败', err);
    },
    complete: function () {
        console.log('上传结束');
    }
});