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

AWS Amplify V5转V6:API请求工具函数改造技术咨询

AWS Amplify V5 迁移至 V6:TypeScript API 请求工具函数修改方案

核心修改点

Amplify V6 对模块结构和 API 调用方式做了重大重构,结合你的需求,需对原函数做以下几处关键修改:


完整修改后的 TypeScript 代码

import { cognitoUserPoolsTokenProvider } from '@aws-amplify/auth';
import { getRestApi, RestApiResponse } from '@aws-amplify/api-rest';

// 定义请求参数类型约束
interface MakeRequestParams {
  api?: string;
  route: string;
  method?: 'get' | 'post' | 'put' | 'delete' | 'patch';
  _options?: Record<string, any>;
  _headers?: Record<string, string>;
  responseType?: 'json' | 'blob' | 'text';
}

const makeRequest = async <T = any>({
  api = 'node-app',
  route,
  method = 'get',
  _options = {},
  _headers = {},
  responseType,
}: MakeRequestParams): Promise<RestApiResponse<T>> => {
  // 获取身份令牌(替换原 Auth.currentSession())
  const { idToken } = await cognitoUserPoolsTokenProvider.authTokenStore.loadTokens();
  
  // 构建请求选项
  const options = {
    ..._options,
    headers: { 
      Authorization: idToken, 
      ..._headers 
    },
    responseType,
  };

  // V6 标准 REST API 调用方式
  const restApi = getRestApi(api);
  return restApi[method](route, options);
};

export default makeRequest;

逐点修改说明

  1. 模块导入调整
    V6 将原 aws-amplify 中的 Auth、API 功能拆分为独立子包,需要分别导入:

    • Auth 相关工具从 @aws-amplify/auth 导入
    • REST API 功能从 @aws-amplify/api-rest 导入(若使用 GraphQL 则替换为 @aws-amplify/api-graphql)
  2. 令牌获取逻辑优化
    loadTokens() 返回的 idToken 直接是令牌字符串,无需像 V5 那样嵌套获取 jwt.idToken.jwtToken

  3. API 调用方式重构
    V6 不再支持 API[method] 这种动态属性访问,改为:

    • 通过 getRestApi(apiName) 获取对应 API 实例
    • 调用实例上的明确方法(如 get、post)
  4. TypeScript 类型增强

    • 定义 MakeRequestParams 接口约束入参类型
    • 添加泛型 <T> 用于指定响应数据类型
    • 返回值使用 V6 提供的 RestApiResponse 类型,统一响应结构

额外注意事项

  • 确保已安装对应子包:npm install @aws-amplify/auth @aws-amplify/api-rest
  • 可根据需求添加错误捕获逻辑,处理令牌获取失败或 API 请求报错场景
  • 若项目中使用了 Amplify 配置,需确保 V6 的配置方式正确(如使用 Amplify.configure() 传入新格式的配置对象)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:22:35