如何根据变量取值动态配置选择web-hook的请求端点
实现方案
这个需求完全可以实现,你当前代码的问题是端点选择函数没有实际返回值,且请求逻辑执行顺序不对:你先写死了post_options的path参数直接发起请求,后续写的选择逻辑完全没有被调用到。
调整步骤
- 给
whichHookToSendTo函数补充返回值逻辑,根据入参返回对应的endpoint路径 - 调整执行顺序:先根据
NumOfClassesBooked的取值拿到对应路径,再构造post_options发起请求
修改后完整代码
// 选择端点的函数,根据入参返回对应路径 function whichHookToSendTo(NumOfClassesBooked) { if (NumOfClassesBooked === "1") { return '/fc6d1598-xxxx-xxxx'; // 替换成1节课对应的webhook路径 } else if (NumOfClassesBooked === "4") { return '/a23d7812-xxxx-xxxx'; // 替换成4节课对应的webhook路径 } else if (NumOfClassesBooked === "8") { return '/b89c2456-xxxx-xxxx'; // 替换成8节课对应的webhook路径 } // 可补充默认情况返回值,避免匹配不到时出现异常 return '/默认兜底路径'; } // 先拿到对应path再构造请求参数 const targetPath = whichHookToSendTo(NumOfClassesBooked); // 传入实际的NumOfClassesBooked变量值 var post_options = { hostname: 'webhook.site', path: targetPath, // 替换为动态拿到的路径 method: 'POST', headers: { 'Content-Type': 'text/json' } }; // 发起请求逻辑 var post_req = https.request(post_options, function(res) { res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('Response: ' + chunk); }); }); post_req.write(post_data); post_req.end();
补充说明
如果三个端点的域名也不一样,只需要把whichHookToSendTo的返回值改成同时返回hostname和path的对象,构造post_options的时候分别取值即可。
内容的提问来源于stack exchange,提问作者rolo101
相关产品推荐
相关产品推荐

