Skip to content

项目处理器

处理器通过 .use(fn) 替换当前实现,不会像 Axios 原生拦截器一样累积成队列。

Message

ts
fastAxios.message.success.use((message) => {});
fastAxios.message.warning.use((message) => {});
fastAxios.message.info.use((message) => {});
fastAxios.message.error.use((message) => {});

未注册时默认输出到控制台。请求核心不会在抛错前额外重复输出日志。

Loading

ts
fastAxios.loading.show.use((text) => {});
fastAxios.loading.close.use((options) => {});

默认实现为空。SDK 不维护全局并发计数;应用需要在注册的处理器中自行避免一个请求提前关闭其他请求的 Loading。

Cache

ts
fastAxios.cache.get.use((key) => storage.get(key));
fastAxios.cache.set.use((key, value) => storage.set(key, value));

默认使用最多 256 项、每项 5 分钟有效的当前进程内 Map。读取处理器应使用 nullundefined 表示未命中;false0 和空字符串都是有效缓存值。

缓存只用于同时满足以下条件的请求:

  • cache: true 且显式非空 cacheNamespace / 容器 namespace;
  • GET;
  • restfulResult: true
  • simpleDataFormat: true

缓存保存最终返回给调用方的数据,不是原始 AxiosResponse。

Crypto

ts
fastAxios.crypto.encrypt.use((config, timestamp) => {
	// 可修改 data、params 或 headers。
});

fastAxios.crypto.decrypt.use((response, options) => {
	return response.data;
});

默认加密处理器不修改请求,默认解密处理器返回 response.datarequestCipher: true 本身不提供加密安全性;应用必须注册与服务端协议一致的实现。

Interceptors

ts
fastAxios.interceptors.request.use((config) => {});

fastAxios.interceptors.response.use((response, options) => {
	return undefined;
});

fastAxios.interceptors.responseError.use((error, options) => {
	return undefined;
});
  • request 可直接修改 Axios 内部请求配置。
  • response 返回非 null/undefined 时完整接管成功响应,跳过文件、RESTful、解密和缓存处理。
  • responseError 返回非 null/undefined 时替换最终拒绝错误;非 Error 值会被包装为 AxiosError

这些是 Fast 项目级单处理器。Axios 实例自身仍使用标准 instance.interceptors.request.use()instance.interceptors.response.use() 执行请求生命周期。

MessageBox

ts
fastAxios.messageBox.confirm.use(async (options) => {
	// 用户确认时正常完成;取消时抛错或返回 rejected Promise。
});

默认实现优先使用 uni.showModal,其次使用浏览器 window.confirm。确认时 Promise 完成,取消、平台失败或不支持的运行环境会拒绝。

fastAxios.message.success 成功提示

调用当前 success 消息处理器。

签名

ts
(message: string): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.success("操作完成");

输入

输入值输入值类型必填/默认值输入值说明
messagestring需要展示的消息文本。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.message.success.use 注入

替换当前 success 消息处理器。

签名

ts
use(fn: (message: string) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.success.use((message) => console.log("success", message));

输入

输入值输入值类型必填/默认值输入值说明
fn(message: string) => void新的消息展示函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值;后续请求使用新实现。

fastAxios.message.warning 警告提示

调用当前 warning 消息处理器。

签名

ts
(message: string): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.warning("操作完成");

输入

输入值输入值类型必填/默认值输入值说明
messagestring需要展示的消息文本。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.message.warning.use 注入

替换当前 warning 消息处理器。

签名

ts
use(fn: (message: string) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.warning.use((message) => console.log("warning", message));

输入

输入值输入值类型必填/默认值输入值说明
fn(message: string) => void新的消息展示函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值;后续请求使用新实现。

fastAxios.message.info 信息提示

调用当前 info 消息处理器。

签名

ts
(message: string): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.info("操作完成");

输入

输入值输入值类型必填/默认值输入值说明
messagestring需要展示的消息文本。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.message.info.use 注入

替换当前 info 消息处理器。

签名

ts
use(fn: (message: string) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.info.use((message) => console.log("info", message));

输入

输入值输入值类型必填/默认值输入值说明
fn(message: string) => void新的消息展示函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值;后续请求使用新实现。

fastAxios.message.error 错误提示

调用当前 error 消息处理器。

签名

ts
(message: string): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.error("操作完成");

输入

输入值输入值类型必填/默认值输入值说明
messagestring需要展示的消息文本。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.message.error.use 注入

替换当前 error 消息处理器。

签名

ts
use(fn: (message: string) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.message.error.use((message) => console.log("error", message));

输入

输入值输入值类型必填/默认值输入值说明
fn(message: string) => void新的消息展示函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值;后续请求使用新实现。

fastAxios.loading.show 显示加载

调用当前 Loading 显示处理器。

签名

ts
(text: string): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.loading.show("加载中...");

输入

输入值输入值类型必填/默认值输入值说明
textstringLoading 提示文字。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.loading.show.use 注入

替换 Loading 显示处理器。

签名

ts
use(fn: (text: string) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.loading.show.use((text) => console.log("show loading", text));

输入

输入值输入值类型必填/默认值输入值说明
fn(text: string) => void项目 UI 的显示函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.loading.close 关闭加载

调用当前 Loading 关闭处理器。

签名

ts
(options: AxiosOptions): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.loading.close({ loading: true });

输入

输入值输入值类型必填/默认值输入值说明
optionsAxiosOptions当前 Fast 请求选项,可用于并发计数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.loading.close.use 注入

替换 Loading 关闭处理器。

签名

ts
use(fn: (options: AxiosOptions) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.loading.close.use((options) => console.log("close loading", options));

输入

输入值输入值类型必填/默认值输入值说明
fn(options: AxiosOptions) => void项目 UI 的关闭函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.cache.get 读取

按请求唯一键调用当前缓存读取器。

签名

ts
(key: string): unknown;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

const result = fastAxios.cache.get("GET&/users");

输入

输入值输入值类型必填/默认值输入值说明
keystring请求流程生成的缓存键。

返回

返回值返回值类型返回值说明
resultunknown缓存值;未命中应为 nullundefined

fastAxios.cache.get.use 注入

替换缓存读取器。

签名

ts
use(fn: (key: string) => unknown): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

const store = new Map<string, unknown>();
fastAxios.cache.get.use((key) => store.get(key));

输入

输入值输入值类型必填/默认值输入值说明
fn(key: string) => unknown新的缓存读取函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.cache.set 写入

调用当前缓存写入器。

签名

ts
(key: string, value: unknown): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.cache.set("GET&/users", [{ id: 1 }]);

输入

输入值输入值类型必填/默认值输入值说明
keystring请求缓存键。
valueunknown最终返回给调用方的结果。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.cache.set.use 注入

替换缓存写入器。

签名

ts
use(fn: (key: string, value: unknown) => void): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

const store = new Map<string, unknown>();
fastAxios.cache.set.use((key, value) => {
	store.set(key, value);
});

输入

输入值输入值类型必填/默认值输入值说明
fn(key: string, value: unknown) => void新的缓存写入函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.crypto.encrypt 加密

请求发送前调用当前加密器。

签名

ts
<Input>(config: InternalAxiosRequestConfig<Input>, timestamp: number): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

import { AxiosHeaders, type InternalAxiosRequestConfig } from "axios";

const config = { headers: new AxiosHeaders() } as InternalAxiosRequestConfig;
fastAxios.crypto.encrypt(config, Date.now());

输入

输入值输入值类型必填/默认值输入值说明
configInternalAxiosRequestConfig<Input>可直接修改的 Axios 请求配置。
timestampnumber当前请求统一使用的 Unix 毫秒时间戳。

返回

返回值返回值类型返回值说明
resultvoid没有返回值;加密器通过修改 config 生效。

fastAxios.crypto.encrypt.use 注入

替换请求加密器。

签名

ts
use(fn: CryptoEncryptHandle): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.crypto.encrypt.use((config, timestamp) => {
	config.headers.set("X-Time", timestamp);
});

输入

输入值输入值类型必填/默认值输入值说明
fnCryptoEncryptHandle新的请求加密或签名函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.crypto.decrypt 解密

调用当前响应解密器。

签名

ts
<Output, Input>(response: AxiosResponse<Output, Input>, options: FastAxiosRequestConfig<Input>): unknown;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

import axios from "axios";

const requestOptions = { url: "/users" };
const response = await axios.request(requestOptions);
const result = fastAxios.crypto.decrypt(response, requestOptions);

输入

输入值输入值类型必填/默认值输入值说明
responseAxiosResponse<Output, Input>已经通过 RESTful 状态校验的响应。
optionsFastAxiosRequestConfig<Input>当前 Fast 请求选项。

返回

返回值返回值类型返回值说明
resultunknown后续简洁数据拆包流程处理的完整响应体。

fastAxios.crypto.decrypt.use 注入

替换响应解密器。

签名

ts
use(fn: CryptoDecryptHandle): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.crypto.decrypt.use((response) => response.data);

输入

输入值输入值类型必填/默认值输入值说明
fnCryptoDecryptHandle新的响应解密函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.interceptors.request 请求

调用当前项目级请求前置处理器。

签名

ts
<Input>(config: InternalAxiosRequestConfig<Input>): void | Promise<void>;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

import { AxiosHeaders, type InternalAxiosRequestConfig } from "axios";

const config = { headers: new AxiosHeaders() } as InternalAxiosRequestConfig;
fastAxios.interceptors.request(config);

输入

输入值输入值类型必填/默认值输入值说明
configInternalAxiosRequestConfig<Input>即将发送且可直接修改的请求配置。

返回

返回值返回值类型返回值说明
resultvoid | Promise<void>处理器完成时结束;手动调用时应等待异步结果。

fastAxios.interceptors.request.use 注入

替换项目级请求前置处理器。

签名

ts
use(fn: InterceptorsRequestHandle): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.interceptors.request.use((config) => {
	config.headers.set("Authorization", "Bearer token");
});

输入

输入值输入值类型必填/默认值输入值说明
fnInterceptorsRequestHandle新的请求处理函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.interceptors.response 响应

调用当前项目级成功响应处理器。

签名

ts
<Output, Input>(response: AxiosResponse<Output, Input>, options: FastAxiosRequestConfig<Input>): unknown;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

import axios from "axios";

const requestOptions = { url: "/users" };
const response = await axios.request(requestOptions);
const result = fastAxios.interceptors.response(response, requestOptions);

输入

输入值输入值类型必填/默认值输入值说明
responseAxiosResponse<Output, Input>Axios 成功响应。
optionsFastAxiosRequestConfig<Input>当前 Fast 请求选项。

返回

返回值返回值类型返回值说明
resultunknown非空值会完整接管默认响应处理;空值表示继续默认流程。

fastAxios.interceptors.response.use 注入

替换项目级成功响应处理器。

签名

ts
use(fn: InterceptorsResponseHandle): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.interceptors.response.use((response) => (response.headers["x-custom"] ? response.data : undefined));

输入

输入值输入值类型必填/默认值输入值说明
fnInterceptorsResponseHandle新的成功响应处理函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.interceptors.responseError 错误提示

调用当前项目级失败响应处理器。

签名

ts
<Input>(error: AxiosError<unknown, Input>, options: FastAxiosRequestConfig<Input>): unknown;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

import { AxiosError } from "axios";

const error = new AxiosError("Network Error");
const requestOptions = { url: "/users" };
const result = fastAxios.interceptors.responseError(error, requestOptions);

输入

输入值输入值类型必填/默认值输入值说明
errorAxiosError<unknown, Input>Axios 请求失败对象。
optionsFastAxiosRequestConfig<Input>当前 Fast 请求选项。

返回

返回值返回值类型返回值说明
resultunknown非空值会替换最终抛出的错误。

fastAxios.interceptors.responseError.use 注入

替换项目级失败响应处理器。

签名

ts
use(fn: InterceptorsResponseErrorHandle): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.interceptors.responseError.use((error) => (error.response?.status === 401 ? new Error("登录失效") : undefined));

输入

输入值输入值类型必填/默认值输入值说明
fnInterceptorsResponseErrorHandle新的失败响应处理函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

fastAxios.messageBox.confirm 确认

打开确认框并等待用户选择。

签名

ts
(options: MessageBoxOptions): Promise<void>;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

await fastAxios.messageBox.confirm({ message: "确认删除?", type: "warning" });

输入

输入值输入值类型必填/默认值输入值说明
optionsMessageBoxOptions正文、类型和按钮文字。

返回

返回值返回值类型返回值说明
resultPromise<void>确认时完成;取消或平台失败时拒绝。

fastAxios.messageBox.confirm.use 注入

替换确认框处理器。

签名

ts
use(fn: MessageBoxHandle): void;

示例

ts
import { createFastAxios } from "@fast-china/axios";

const fastAxios = createFastAxios({ baseUrl: "/api" }, true);

fastAxios.messageBox.confirm.use(async (options) => {
	console.log(options.message);
});

输入

输入值输入值类型必填/默认值输入值说明
fnMessageBoxHandle新的异步确认框函数。

返回

返回值返回值类型返回值说明
resultvoid没有返回值。

缓存上下文与异步处理器

cache.namespace = "tenant:user:locale" 设置业务上下文;空字符串禁用请求缓存。退出登录或 Cookie 会话变化时调用 cache.clear(),切换 namespace 也会使旧键失效。请求开始时记录失效代数,旧请求完成后不能回写到新会话。请求身份会散列后参与缓存键,明文 Authorization 不交给缓存处理器。没有 Web Crypto 摘要能力时安全地跳过请求缓存。

自定义持久化后端负责物理清理与 TTL;容器实例前缀及失效代数防止新页面复活旧缓存。缓存命中仍经过请求处理器和 Axios 取消检查,不再重复执行成功响应接管、解密或 Loading。

请求流程等待 request、response 和 responseError 的返回值。request 完成后才处理去重、缓存和发送;response/responseError 的异步结果为 null/undefined 时继续默认处理,拒绝则向调用方传播。非 AxiosError、取消以及明确离线仍按原来的专门分支处理,不调用 responseError。Message/Loading/Crypto 的同步处理合同不因此改成异步。手动调用公开处理器时,等待和配对责任属于调用方。