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

如何将存在参数依赖的两个API调用Action合并为单个Action

问题解答

该需求完全可以实现,两种实现方式都可正常运行,你可以根据自身开发成本选择方案:

  • 方案1:无需修改后端,直接在当前Action的then方法内链式调用第二个API即可,开发成本最低,是优先推荐的方案
  • 方案2:后端封装两个接口为单个接口,适合多端复用该业务流程的场景

方案1具体实现步骤

Zapier 自定义Action原生支持在单个执行逻辑内发起多次z.request请求,完全符合平台规范,没有使用限制。
你只需要按以下逻辑修改代码即可:

  1. 先调用创建发票的API,拿到返回的INVOICE_ID
  2. 在第一个请求的then回调内调用发票确认API,传入上一步拿到的ID
  3. 确认完成后按需获取PDF文件内容/地址,最终返回结果

修改后的参考代码如下:

// 第一步:调用创建发票接口
const createInvoiceOptions = {
  url: 'https://my.fastbill.com/api/1.0/api.php',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: {
    'SERVICE': 'invoice.create', // 替换为你实际创建发票的服务标识
    'DATA' : bundle.inputData // 传入创建发票需要的入参
  }
}

return z.request(createInvoiceOptions)
  .then((createResponse) => {
    createResponse.throwForStatus();
    const invoiceId = createResponse.json.INVOICE_ID; // 从创建接口返回值中提取发票ID
    
    // 第二步:调用发票确认接口
    const completeInvoiceOptions = {
      url: 'https://my.fastbill.com/api/1.0/api.php',
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
      },
      body: {
        'SERVICE': 'invoice.complete',
        'DATA' : {    
          'INVOICE_ID': invoiceId
        }
      }
    }
    return z.request(completeInvoiceOptions)
  })
  .then((completeResponse) => {
    completeResponse.throwForStatus();
    const results = completeResponse.json;
    // 如果需要下载PDF可以在此处追加调用获取PDF的接口逻辑
    return results;
  });

方案2注意事项

如果你的业务中多个场景都需要用到「创建+确认发票」的流程,可以选择后端封装为单个API,优势是后续前端侧不需要重复写链式调用逻辑,统一维护业务规则;缺点是需要额外投入后端开发资源,如果你仅在Zapier中使用该流程,不需要选择该方案。

额外注意事项

  • 错误处理:两个请求任意一个返回错误状态码,throwForStatus()都会直接抛出异常,Zapier会自动标记该Action执行失败,符合业务预期
  • 超时限制:Zapier自定义Action的最长执行时间为30秒,只要两个API的总响应时长不超过该限制即可正常运行

内容的提问来源于stack exchange,提问作者Furqan S. Mahmoud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:04