Skip to content

Request 异步请求

request 是一个封装于axios强大的异步数据管理的 Hooks,项目中的网络请求场景使用 request 就够了。 request 核心代码极其简单,并且可以很方便的扩展出更高级的功能。目前已有能力包括:

  • 节流
  • 错误重试
  • 数据缓存

安装

sh
# npm
npm install @neosjs/request --save-dev

# yarn
yarn add @neosjs/request

# pnpm
pnpm add @neosjs/request
# npm
npm install @neosjs/request --save-dev

# yarn
yarn add @neosjs/request

# pnpm
pnpm add @neosjs/request

基础使用

参数

参数说明类型默认值
url请求地址String-

错误重试

通过设置 retry ,指定错误重试次数,则 Request 在失败后会进行重试。如果设置了 retryDelay ,每次重试的时间间隔将会按照设定值来发起下一次的请求。

示例用法

提示

可以打开控制台 --> network 查看请求,当请求次数达到设置的 retry 时,将自动停止请求,并抛出错误信息。

参数

参数说明类型默认值
retry重试次数Number1
retryDelay重试时间间隔,单位为毫秒Number2000

数据缓存

如果设置了 cacheRequest 会将当前请求成功的数据缓存起来。下次组件初始化时,如果有缓存数据,我们会优先返回缓存数据。 你也可以通过 cacheMaxAge 设置数据缓存时间,超过该时间,我们会清空该条缓存数据。

示例用法

提示

由于已经缓存了数据结构,当再次点击按钮时,将不会再发出请求。 可以打开控制台 --> network 查看请求。

参数

参数说明类型默认值
cache是否开启缓存Booleantrue

async/await 用法

ts
import request from '@neosjs/request'
const res = await request({
  url: 'https://api.com',
  params: {
    id: 1
  }
})
import request from '@neosjs/request'
const res = await request({
  url: 'https://api.com',
  params: {
    id: 1
  }
})

requestAll

ts
import { requestAll } from '@neosjs/request'
const requestA = await request({}) // 请求1
const requestB = await request({}) // 请求2
const res = requestAll([requestA, requestB])
console.log(res)
import { requestAll } from '@neosjs/request'
const requestA = await request({}) // 请求1
const requestB = await request({}) // 请求2
const res = requestAll([requestA, requestB])
console.log(res)

requestInstance

该方法暴露出所有axios的接口

ts
import { requestInstance } from '@neosjs/request'
const res = await requestInstance({ url: 'https://api.com' })
console.log(res)
import { requestInstance } from '@neosjs/request'
const res = await requestInstance({ url: 'https://api.com' })
console.log(res)

参数

参数说明类型默认值
url请求的 api 地址String-
method请求类型StringGET
dataType返回数据类型Stringjson
timeout超时时间Number10000
withCredentials是否传递 cookieBooleanfalse
params请求的参数体Object-
retry重试次数Number1
retryDelay重试间隔时间(ms)Number2000
cache是否开启缓存Booleantrue
cacheMaxAge缓存时间(ms)Number60000
forceUpdate是否强制更新缓存Booleanfalse
cancelRequest是否取消重复请求Booleanfalse
headers设置请求的 headerObject{'Content-Type': 'application/json'}
before发起请求之前的回调函数Functionnull
after请求完成后的回调函数Functionnull
success成功返回的回调函数Functionnull
fail接口调用失败的回调函数Functionnull
complete接口调用结束的回调函数接口调用结束的回调函数
(调用成功、失败都会执行)
Functionnull

Released under the MIT License.

Request 异步请求 has loaded