Midway Hooks 默认使用浏览器指定的 fetch 发送请求,为了支持不同场景,开发者可以自定义请求函数。
比如,你希望使用 Axios 作为 HTTP 请求的客户端,只需要在前端页面入口处,添加如下代码即可:
import { defaults, LambdaParam } from '@midwayjs/hooks/request'import axios from 'axios'defaults.request = async (param: LambdaParam) => {const resp = await axios(params)return resp.data}
注意事项
关于开发者实现的自定义函数,需要注意以下情况:
- 自定义函数对所有请求生效,重复设置
defaults.request方法,会覆盖之前的设置 - 自定义函数的返回值应该是调用的接口返回值,像
axios这种对响应自行包装的,需要手动解析出接口的返回值
类型定义
我们在 @midwayjs/hooks/request 中提供了足够的元信息,来支持你在各种场景下完成前端调用。
type Defaults = {request: (param: LambdaParam) => any;}type LambdaParam = {url?: string;method?: 'GET' | 'POST';data?: {args?: any[]};meta: {functionName?: string;functionGroup?: string;gateway?: string;}}
