提交 ab79f9fc 作者: 方治民

feat: 添加网络请求 inject 实现,允许动态修改请求配置

上级 d4e8f9ab
...@@ -259,12 +259,18 @@ export class VAxios { ...@@ -259,12 +259,18 @@ export class VAxios {
const { requestOptions } = this.options const { requestOptions } = this.options
const opt: RequestOptions = Object.assign({}, requestOptions, options) let opt: RequestOptions = Object.assign({}, requestOptions, options)
const { beforeRequestHook, requestCatchHook, transformRequestHook } = transform || {} const { beforeRequestHook, requestCatchHook, transformRequestHook, inject } = transform || {}
if (inject && isFunction(inject)) {
const result = inject(conf, opt)
conf = result.config
opt = result.options
}
if (beforeRequestHook && isFunction(beforeRequestHook)) { if (beforeRequestHook && isFunction(beforeRequestHook)) {
conf = beforeRequestHook(conf, opt) conf = beforeRequestHook(conf, opt)
} }
conf.requestOptions = opt conf.requestOptions = opt
conf = this.supportFormData(conf) conf = this.supportFormData(conf)
......
...@@ -12,6 +12,15 @@ export interface CreateAxiosOptions extends AxiosRequestConfig { ...@@ -12,6 +12,15 @@ export interface CreateAxiosOptions extends AxiosRequestConfig {
export abstract class AxiosTransform { export abstract class AxiosTransform {
/** /**
* 注入自定义配置,在请求方法调用时
* 允许动态修改本次请求的 config 和 options
*/
inject?: (
config: AxiosRequestConfig,
options: RequestOptions,
) => { config: AxiosRequestConfig; options: RequestOptions }
/**
* @description: Process configuration before request * @description: Process configuration before request
* @description: Process configuration before request * @description: Process configuration before request
*/ */
......
...@@ -267,8 +267,14 @@ export const defHttp = createAxios({ ...@@ -267,8 +267,14 @@ export const defHttp = createAxios({
// other api url // other api url
// export const otherHttp = createAxios({ // export const otherHttp = createAxios({
// requestOptions: { // transform: {
// apiUrl: 'xxx', // inject: (config: AxiosRequestConfig<any>, options: http.RequestOptions) => {
// urlPrefix: 'xxx', // // TODO: 根据实际项目配置
// }, // return { config, options }
// }); // },
// },
// requestOptions: {
// apiUrl: 'xxx',
// urlPrefix: 'xxx',
// },
// })
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论