Skip to content

请求配置与错误 ​

地址与配置 ​

ts
import { resolveHttpConfig, validateAddress } from '@axewo/fin-core/config'

const config = resolveHttpConfig({
  apiBase: '/api/',
  timeout: '15000',
  withCredentials: 'false',
})
// 冻结对象:apiBase、trustedApiBase、timeout、withCredentials。
validateAddress('https://api.example.com/service/')

resolveHttpConfig 接收普通对象,不直接读取 import.meta.env 或 process.env;Vite、Webpack 和服务端项目自行映射配置。默认使用 /api/、30000ms、不跨源携带 Cookie。

trustedApiBase 默认等于 apiBase;显式提供时也必须相等。超时为 1 至 2147483647 的整数;Cookie 开关只接受 true、false 及对应字符串。

validateAddress(value, directory = true) 接受同源绝对路径或完整 HTTP(S) 地址。目录必须以 / 结束;不允许内嵌凭据、查询、片段、歧义路径。非本机 HTTP 地址拒绝,跨源生产 API 使用 HTTPS。代码入口等非目录地址可传 false。无效配置同步抛错,不回显输入。

安全错误分类 ​

ts
import { toSafeError } from '@axewo/fin-core/errors'

const error = toSafeError({ response: { status: 401 } })
// { kind: 'unauthenticated', message: '登录已失效,请重新登录' }

返回值只有 kind 与 message,不附带请求头、URL、响应体或原始堆栈。它可以识别常见 Axios、Fetch HttpError 和微前端 SDK 错误。

kind含义
cancelled取消、会话变更,message 为空
unauthenticated401 或明确的未认证错误
forbidden403 或明确的权限拒绝
timeout传输超时、SDK 调用或守卫超时
network已识别的网络错误
unknown其他错误,使用固定默认文案

多语言界面可用 kind 映射到 fin-locale 的 fin.errors.* 词条;取消状态通常不展示消息。core 不创建语言实例,也不自动弹出通知。