@gz-fronted/gz-pc 0.1.2 → 0.1.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -10
- package/dist/fetch/index.cjs +682 -35
- package/dist/fetch/index.js +684 -37
- package/package.json +99 -99
package/README.md
CHANGED
|
@@ -126,7 +126,7 @@ function gzFetch<TResponse, TRequestParams = unknown>(
|
|
|
126
126
|
| `paramsInUrl` | `boolean` | 否 | 仅 DELETE 生效;为 `true` 时参数放入 Query |
|
|
127
127
|
| `headers` | `Record<string, string>` | 否 | 本次请求附加的请求头 |
|
|
128
128
|
| `timeout` | `number` | 否 | 本次请求超时时间,单位毫秒;优先于实例配置 |
|
|
129
|
-
| `showErrorMessage` | `boolean` | 否 |
|
|
129
|
+
| `showErrorMessage` | `boolean` | 否 | 是否显示普通消息或 Debug Drawer 错误反馈 |
|
|
130
130
|
| `skipAuth` | `boolean` | 否 | 为 `true` 时跳过 Token 注入 |
|
|
131
131
|
| `responseType` | `'json' \| 'blob' \| 'text'` | 否 | 响应数据类型,默认 `json` |
|
|
132
132
|
| `signal` | `AbortSignal` | 否 | 取消请求的标准 AbortSignal |
|
|
@@ -270,7 +270,7 @@ HTTP 非 `2xx` 时仅尝试读取响应体的 `msg`。没有有效 `msg` 时使
|
|
|
270
270
|
- `CANCELED_ERROR`
|
|
271
271
|
- `UNKNOWN_ERROR`
|
|
272
272
|
|
|
273
|
-
|
|
273
|
+
错误反馈默认开启,优先级为“单请求配置 > 实例配置 > 默认值 true”:
|
|
274
274
|
|
|
275
275
|
```ts
|
|
276
276
|
configureGzFetch({ showErrorMessage: true });
|
|
@@ -283,7 +283,7 @@ await gzFetch<void, SaveParams>({
|
|
|
283
283
|
});
|
|
284
284
|
```
|
|
285
285
|
|
|
286
|
-
取消请求会转换成 `CANCELED_ERROR
|
|
286
|
+
取消请求会转换成 `CANCELED_ERROR`,且默认不显示错误反馈:
|
|
287
287
|
|
|
288
288
|
```ts
|
|
289
289
|
const controller = new AbortController();
|
|
@@ -326,7 +326,7 @@ configureGzFetch({
|
|
|
326
326
|
| `modalMessage` | `string` | `当前登录状态已失效,请重新登录。` |
|
|
327
327
|
| `onUnauthorized` | `() => void` | 无;确认后使用 `window.location.assign` |
|
|
328
328
|
|
|
329
|
-
|
|
329
|
+
为了让普通错误消息、Debug Drawer 和 401 弹窗都继承宿主项目当前的 gg-ui 主题,需要在应用根部的
|
|
330
330
|
`ConfigProvider` 内挂载一次 `GzFetchFeedbackProvider`:
|
|
331
331
|
|
|
332
332
|
```tsx
|
|
@@ -340,12 +340,11 @@ import { ConfigProvider } from '@chenhui996/gg-ui';
|
|
|
340
340
|
</ConfigProvider>;
|
|
341
341
|
```
|
|
342
342
|
|
|
343
|
-
该 Provider 使用 `message.useMessage()
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
优先使用统一 Provider。
|
|
343
|
+
该 Provider 使用 `message.useMessage()`、受控 gg-ui `Modal` 和 `Drawer`,不会在已接入
|
|
344
|
+
的项目中调用脱离 React 上下文的静态反馈 API。因此主题切换时,三类反馈都会继续读取
|
|
345
|
+
宿主 `ConfigProvider` 的主题 Token。业务页面不需要维护反馈状态。未挂载该 Provider 的
|
|
346
|
+
已有项目仍会回退到原来的静态 `message.error`,不会静默丢失错误提示。
|
|
347
|
+
`GzFetchUnauthorizedModal` 继续保留为兼容 API,但新项目优先使用统一 Provider。
|
|
349
348
|
|
|
350
349
|
所有由同一份 gz-pc 包创建的默认客户端和独立客户端共享一个 401 管理器。首个 401
|
|
351
350
|
打开弹窗,后续并发 401 不会创建新弹窗;取消或弹窗关闭动画结束后会释放状态,后续
|
|
@@ -368,6 +367,24 @@ configureGzFetch({
|
|
|
368
367
|
开启该能力后,401 仍会作为 `GzFetchError` 抛给调用方,但请求核心不会再为同一个
|
|
369
368
|
401 额外调用普通 `message.error`。其他 HTTP 错误、网络错误、超时和取消请求行为不变。
|
|
370
369
|
|
|
370
|
+
## Debug 错误反馈
|
|
371
|
+
|
|
372
|
+
非 401 HTTP 异常的响应体包含对象类型的 `debug`,并且以下任一开关开启时,错误会进入
|
|
373
|
+
Provider 内的 Debug Drawer,不再重复调用普通 `message.error`:
|
|
374
|
+
|
|
375
|
+
- 当前 URL Query 包含 `showDebug=1`;
|
|
376
|
+
- `localStorage.getItem('showDebug') === '1'`。
|
|
377
|
+
|
|
378
|
+
该判断不依赖构建环境,并会安全处理无 `window`、无 `localStorage` 或存储访问被禁用的
|
|
379
|
+
运行环境。Drawer 从右侧打开,在同一个列表中追加每一次错误且不去重;可逐条删除、全部
|
|
380
|
+
清除或手动关闭。关闭 Drawer 不会清空列表,后续新错误会再次打开。每条记录展示错误
|
|
381
|
+
摘要、请求 method/url,以及完整格式化的 `debug.request`、`debug.stackTrace` 和
|
|
382
|
+
`debug.mdc`;缺失字段显示为空占位。
|
|
383
|
+
|
|
384
|
+
`showErrorMessage: false` 会同时关闭普通错误消息和 Debug Drawer。HTTP 401 始终优先走
|
|
385
|
+
原有 unauthorized 分支,不进入 Debug Drawer。未挂载 Provider 时会回退普通
|
|
386
|
+
`message.error`,避免吞掉错误反馈。
|
|
387
|
+
|
|
371
388
|
## 中间件
|
|
372
389
|
|
|
373
390
|
中间件的 `onRequest`、`onResponse` 和 `onError` 都按注册顺序执行,不采用洋葱
|