Midway Hooks 默认使用浏览器指定的 fetch 发送请求,为了支持不同场景,开发者可以自定义请求函数。

比如,你希望使用 Axios 作为 HTTP 请求的客户端,只需要在前端页面入口处,添加如下代码即可:

  1. import { defaults, LambdaParam } from '@midwayjs/hooks/request'
  2. import axios from 'axios'
  3. defaults.request = async (param: LambdaParam) => {
  4. const resp = await axios(params)
  5. return resp.data
  6. }

注意事项

关于开发者实现的自定义函数,需要注意以下情况:

  • 自定义函数对所有请求生效,重复设置 defaults.request 方法,会覆盖之前的设置
  • 自定义函数的返回值应该是调用的接口返回值,像 axios 这种对响应自行包装的,需要手动解析出接口的返回值

类型定义

我们在 @midwayjs/hooks/request 中提供了足够的元信息,来支持你在各种场景下完成前端调用。

  1. type Defaults = {
  2. request: (param: LambdaParam) => any;
  3. }
  4. type LambdaParam = {
  5. url?: string;
  6. method?: 'GET' | 'POST';
  7. data?: {
  8. args?: any[]
  9. };
  10. meta: {
  11. functionName?: string;
  12. functionGroup?: string;
  13. gateway?: string;
  14. }
  15. }