使用方法
发起请求
我们直接引入的包或创建的请求实例都是一个函数,调用该函数即可发起请求。
js
// 通过引入的包调用发起请求
import ajax from 'uni-ajax'
ajax()
// 通过创建的请求实例发起请求
const instance = ajax.create()
instance()
该函数接收两种参数类型,返回都是 Promise。你可根据自己的实际情况使用。
js
/**
* @param {object} config 无回调属性的请求配置对象
* @returns {Promise.resolve} 响应成功对象
* @returns {Promise.reject} 请求或响应失败对象
*/
ajax(config)
/**
* @param {string} url 请求地址
* @param {string|object} data 请求参数
* @param {object} config 无回调属性的请求配置对象
* @returns {Promise.resolve} 响应成功对象
* @returns {Promise.reject} 请求或响应失败对象
*/
ajax(url, data, config)
传入回调属性参数 2.5.0
你也可以传入回调属性参数,但该方式使用率较低,所以在 2.5.0
版本已弃用。
js
/**
* @param {object} config 含回调属性 (至少传入一个 success / fail / complete 参数) 的请求配置对象
* @returns {Promise.resolve} undefined
* @returns {Promise.reject} 无
*/
ajax(config)
为了方便起见,已经为所有支持的请求方法提供了别名。并且调用这些方法的参数跟上面一样,但不同的是在方法别名中传入的 method
是无效的。
js
ajax.get()
ajax.post()
ajax.put()
ajax.delete()
请求配置
上面的请求方法提到了 请求配置对象
,那么这个对象里有什么属性呢?你可以通过下面文档查看详细内容。
参考:请求配置
响应结构
请求的响应包含以下信息。
参数 | 类型 | 说明 |
---|---|---|
data | Object / String / ArrayBuffer | 服务器返回的数据 |
statusCode | Number | 服务器响应的 HTTP 状态码 |
header | Object | 服务器响应的头 |
config | Object | 请求提供的配置信息 |
cookies | Array<string> | 服务器返回的 cookies,格式为字符串数组 |
取消请求
从 2.6.0
开始,支持使用 AbortController 取消请求:2.6.0
之前版本可通过下面的 RequestTask 方式。
js
const controller = new AbortController()
ajax({ signal: controller.signal })
controller.abort() // 取消请求
注意的是 AbortController
仅支持 H5,其他环境可以通过下面方式使用:
bash
# 安装依赖
npm install abort-controller
js
// vite.config.ts
export default defineConfig({
resolve: {
alias: {
'abort-controller': 'abort-controller/dist/abort-controller'
}
}
})
js
// 如果没有上面的 vite 配置则需要引入完整路径
// import { AbortController } from 'abort-controller/dist/abort-controller'
// #ifndef H5
import { AbortController } from 'abort-controller'
// #endif
RequestTask
网络请求任务对象。
方法 | 说明 |
---|---|
abort | 中断请求任务 |
onHeadersReceived | 监听 HTTP Response Header 事件。会比请求完成事件更早,仅 微信小程序平台 支持 |
offHeadersReceived | 取消监听 HTTP Response Header 事件,仅 微信小程序平台 支持 |
通过 fetcher 获取:2.6.0
使用 Fetcher 抓取器实例来获取 RequestTask
。2.5.0
js
import ajax, { Fetcher } from 'uni-ajax'
const fetcher = new Fetcher()
ajax({ fetcher })
fetcher.abort() // 中断请求(Fetcher 只封装了 abort 方法,其他请使用 source 获取使用)
const requestTask = await fetcher.source() // 获取请求任务对象
请求方法调用或通过 xhr 获取:2.5.0
直接调用。这里 request 接收的是封装后的 Promise,并支持 RequestTask 的以上方法。但实际并非真正的 RequestTask 对象。只是封装继承 Promise 并挂载 RequestTask 的同名方法。
js
const request = ajax('https://www.example.com/api/demo')
request.abort()
获取 RequestTask 对象调用。通过参数请求选项的 xhr 回调参数也可以获取 RequestTask 对象。
js
ajax({
url: 'https://www.example.com/api/demo',
xhr: (requestTask, config) => {
requestTask.abort()
}
})