> 文档中心 > umi request设定middleware

umi request设定middleware


主思路

在app.tsx里设定,middlewares, requestInterceptors, responseInterceptors, errorHandler

详情

很简单,在app.tsx里设定。middlewares 会比较复杂,但可以同时处理request和response,比如写入特殊的日志。

errorHandler 就是处理错误的,可以在这里判断业务错误,配合status code和response。

requestInterceptors 是request 拦截器,在request发出前做一些处理,比如加上auth key。

responseInterceptors 是response拦截器,在response交给业务真正处理前做一些处理,比如变换格式,或者补充内容。

import type { RequestConfig } from 'umi';import { getAuthToken } from '@/helpers/utils';const commonProcRequest = (url: string, options: RequestOptionsInit) => {  if (options.headers) {    const authToken = getAuthToken();    options.headers['X-AUTH-TOKEN'] = authToken.token;  }  return {    url: url,    options: {      ...options,    },  };};// request settingexport const request: RequestConfig = {  timeout: 10000,  errorConfig: {},  middlewares: [    async function commonMiddleware(ctx, next) {      // process resp      console.log('A before');      await next();      console.log('A after');    },  ],  requestInterceptors: [commonProcRequest],  responseInterceptors: [],};

参考

官方 @umijs/plugin-request

网络请求 - Ant Design Pro

useRequest: useRequest- 蚂蚁中台标准请求 Hooks - 知乎