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;
逐点修改说明
模块导入调整
V6 将原aws-amplify中的 Auth、API 功能拆分为独立子包,需要分别导入:- Auth 相关工具从
@aws-amplify/auth导入 - REST API 功能从
@aws-amplify/api-rest导入(若使用 GraphQL 则替换为@aws-amplify/api-graphql)
- Auth 相关工具从
令牌获取逻辑优化
loadTokens()返回的idToken直接是令牌字符串,无需像 V5 那样嵌套获取jwt.idToken.jwtTokenAPI 调用方式重构
V6 不再支持API[method]这种动态属性访问,改为:- 通过
getRestApi(apiName)获取对应 API 实例 - 调用实例上的明确方法(如
get、post)
- 通过
TypeScript 类型增强
- 定义
MakeRequestParams接口约束入参类型 - 添加泛型
<T>用于指定响应数据类型 - 返回值使用 V6 提供的
RestApiResponse类型,统一响应结构
- 定义
额外注意事项
- 确保已安装对应子包:
npm install @aws-amplify/auth @aws-amplify/api-rest - 可根据需求添加错误捕获逻辑,处理令牌获取失败或 API 请求报错场景
- 若项目中使用了 Amplify 配置,需确保 V6 的配置方式正确(如使用
Amplify.configure()传入新格式的配置对象)
内容的提问来源于stack exchange,提问作者Ahsan Baloch
相关产品推荐
相关产品推荐

