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

API Gateway返回200状态码同时携带错误信息问题咨询

问题触发原因

针对Lambda集成Plaid接口返回200状态码同时携带错误信息的场景,触发原因基本集中在以下三类:

  • API网关层响应映射配置错误
    如果你是通过API Gateway触发Lambda,采用代理集成模式时,HTTP状态码完全由Lambda返回结构里的statusCode字段决定。只要Lambda函数本身没有触发运行时超时、未捕获异常导致执行失败,API Gateway就不会自动返回4xx/5xx状态码。绝大多数这类问题都是代码里没有根据Plaid返回的业务结果动态设置状态码,不管调用Plaid成功还是失败,都固定写死返回statusCode: 200,把Plaid返回的错误信息直接放在响应体里透传。
  • Plaid SDK异常捕获逻辑写法错误
    调用Plaid接口的异常捕获块逻辑有误,没有在捕获到Plaid返回的业务错误时构造对应错误状态码的响应,反而把错误信息放在成功响应结构里返回。典型错误写法参考:
    // Node.js Lambda 错误示例
    const getTransactions = async (event) => {
      try {
        const result = await plaidClient.transactionsGet(reqParams)
        return {
          statusCode: 200,
          body: JSON.stringify({data: result.data})
        }
      } catch (plaidErr) {
        // 错误点:捕获Plaid异常后仍返回200状态码
        return {
          statusCode: 200,
          body: JSON.stringify({error: plaidErr.response.data})
        }
      }
    }
    
  • Plaid接口本身的设计逻辑
    Plaid的部分异步类接口(包括交易历史拉取、资产报告生成、身份核验异步查询类接口)本身就会用200 HTTP状态码承载业务态错误:比如首次调用拉取历史交易时,若Plaid侧还没完成金融机构的数据同步,会在200响应里携带PRODUCT_NOT_READY的错误标识,属于接口正常逻辑,需要按照文档要求做间隔轮询,等数据就绪后再重新拉取,不属于调用异常。

快速排查路径:

  1. 在Lambda代码中打印Plaid接口的原始返回内容,先确认错误信息是Plaid侧返回的业务提示,还是自身代码逻辑拼接生成的异常
  2. 检查Lambda返回给API Gateway的结构,确认statusCode字段是否会根据Plaid的返回结果动态调整,是否存在固定写死200的逻辑
  3. 核对当前调用的Plaid官方接口文档,确认对应接口的异步返回规则,排除正常的待重试场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:30:57