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;
}
}