You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios带请求体的POST请求如何指定与请求体不同的响应类型

问题原因

该报错是Axios v0.22.0及更早版本的官方类型定义bug,此版本下axios.post的泛型参数逻辑存在错误,错误绑定了请求体和响应的类型,导致你传入的请求体被强制要求和指定的响应类型AuthResponse结构一致,同时返回的axiosResp.data也被错误推断为请求体的类型,你的写法本身没有问题。

解决方案
  • 推荐方案:将Axios升级到v0.23.0及以上版本,官方已在该版本修复了这个类型bug,升级后你的原有代码可以直接正常运行,axios.post<AuthResponse>的泛型参数会正确作用于返回的响应数据,不会再对请求体做错误的类型校验。
  • 临时兼容方案(若暂时无法升级Axios版本):可以手动传入三个泛型参数,分别指定响应类型、Axios响应包装类型、请求体类型,示例代码如下:
// 先定义请求体对应的TS类型
interface AuthRequest {
  grant_type: string
  refresh_token: string
}

axios
  .post<AuthResponse, AxiosResponse<AuthResponse>, AuthRequest>(
    secrets.authURL,
    {
      grant_type: this.grantType,
      refresh_token: this.authPayload,
    },
    {
      headers: {
        Authorization: this.getAuthHeader(),
        "Content-Type": this.contentType,
      },
    }
  )
  .then((axiosResp) => {
    // 此时axiosResp.data会被正确推断为AuthResponse类型
    const response = axiosResp.data;
  });

内容的提问来源于stack exchange,提问作者Toguard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:27:06