Skip to content

Global UseInterceptors

要为应用程序中的每个路由设置请求拦截器, 让我们使用 HttpServicesApplication 对象的 useInterceptorsReq()useInterceptorsRes() 方法。它们的参数是一个或多个拦截器函数。 下面我们来看一下useInterceptorsReq()useInterceptorsRes()例子:

useInterceptorsReq

ts
const HTTPClient = HttpFactory.create(ApplicationModule)
HTTPClient.useInterceptorsReq(configure => {
  const Authorization = 'this is authorization'
  if (Authorization && configure.headers)
    configure.headers.Authorization = `Bearer ${Authorization}`
  return configure
})

useInterceptorsRes

ts
const HTTPClient = HttpFactory.create(ApplicationModule)
HTTPClient.useInterceptorsRes(result => {
  console.log('global InterceptorsRes', result)
  const callError = result?.status !== 200 || result?.data?.code !== 200
  if (!callError) return result.data
  return Promise.reject(result) // or throw result
})

上述全局拦截器将应用于所有路由。

TIP

如果全局控制器方法级别的拦截器同时存在,它们将按照以下优先级执行(由高到低,只会执行优先级高的拦截器):

  • 方法拦截器
  • 控制器拦截器
  • 全局拦截器