diff --git a/src/request-config.tsx b/src/request-config.tsx index 46064bca..6014051b 100644 --- a/src/request-config.tsx +++ b/src/request-config.tsx @@ -4,7 +4,10 @@ import { history, RequestConfig } from '@umijs/max'; import { message } from 'antd'; import { DEFAULT_ENTER_PAGE } from './config/settings'; import ErrorMessageContent from './pages/_components/error-message-content'; -import { extraRequestInterceptors } from './request.extensions'; +import { + extraRequestInterceptors, + extraResponseInterceptors +} from './request.extensions'; // these APIs do not via the GPUSTACK_API_BASE_URL const NoBaseURLAPIs = ['/auth', '/v1', '/version', '/proxy', '/update']; @@ -49,6 +52,9 @@ export const requestConfig: RequestConfig = { (response) => { // to do something return response; - } + }, + // Build-time tooling can plug additional response interceptors via + // `request.extensions.ts`. Default is an empty list. + ...extraResponseInterceptors ] }; diff --git a/src/request.extensions.ts b/src/request.extensions.ts index 9ca2bbb6..8873a263 100644 --- a/src/request.extensions.ts +++ b/src/request.extensions.ts @@ -13,3 +13,11 @@ export type RequestInterceptor = ( ) => { url: string; options: Record }; export const extraRequestInterceptors: RequestInterceptor[] = []; + +// Response-side counterpart. Each interceptor receives the (successful) +// response and returns it; tooling may overwrite this file to react to +// responses (e.g. clearing a one-shot request-scoped hint after a write +// completes). Default is an empty list. +export type ResponseInterceptor = (response: any) => any; + +export const extraResponseInterceptors: ResponseInterceptor[] = [];