Appearance
请求配置与错误
地址与配置
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 为空 |
| unauthenticated | 401 或明确的未认证错误 |
| forbidden | 403 或明确的权限拒绝 |
| timeout | 传输超时、SDK 调用或守卫超时 |
| network | 已识别的网络错误 |
| unknown | 其他错误,使用固定默认文案 |
多语言界面可用 kind 映射到 fin-locale 的 fin.errors.* 词条;取消状态通常不展示消息。core 不创建语言实例,也不自动弹出通知。