服务器无Zapier请求的目标数据时,应向Zapier返回什么响应
Zapier 对接无匹配数据时的返回规则及代码处理方案
通用规则说明
对接Zapier时,正常业务场景下无匹配目标数据,优先返回200状态码+空数组,不要返回错误信息,原因如下:
- Zapier的触发器默认会解析200状态码响应的数组内容,空数组代表本次无新触发事件,Zapier会自动跳过本次轮询/请求,不会触发错误告警,也不会影响后续请求
- 如果你返回4xx/5xx错误码,Zapier会判定你的接口出现故障,多次报错后可能会自动停用对应的Zap集成,反而影响正常使用。只有当请求确实属于参数错误、服务器异常等真实故障场景时,才需要返回对应错误码。
代码问题及标记位置处理方案
首先你当前代码存在逻辑漏洞:_.filter和_.orderBy都是返回新数组的纯函数,不会修改原contactClone对象,你现在的写法过滤和排序逻辑完全没有生效,需要先修正。
修正后的代码逻辑如下,标记位置的返回内容根据你的业务需求二选一即可:
if(contact?.length){ const contactClone = _.clone(contact); // 修正:将过滤、排序的结果赋值给新变量 const filteredContact = _.filter(contactClone, (o: any) => o.tag_updated_on); const orderedContact = _.orderBy(filteredContact, 'tag_updated_on', 'desc'); if(orderedContact?.length){ res.status(200).json([orderedContact[0]]); return; } // 以下是你标记的位置,二选一 // 选项1:业务要求必须返回带tag_updated_on字段的联系人,无匹配则返回空 res.status(200).json([]); // 选项2:业务允许无tag_updated_on字段时返回任意第一个联系人,保留你原来的写法即可 // res.status(200).json([contact[0]]); } // 补充:如果原contact本身是空数组,也返回空即可 res.status(200).json([]);
内容的提问来源于stack exchange,提问作者Ehsan Soomro
相关产品推荐
相关产品推荐

