code.org Applab中startWebRequest调用API报错的解决咨询
解决code.org Applab中startWebRequest回调报错问题
问题重现
在code.org Applab中调用汇率API时,执行以下代码出现错误:
var url = "https://api.apilayer.com/exchangerates_data/symbols?to="; var request = { method: "GET", headers: { "apikey": "XOIlrz9JbDcWlmjNvG9vuBwUDRByRpEt", "Content-Type": "application/json" } }; startWebRequest(url, request, function(status, json) { if (status === 200) { console.log(json.symbols); } else { console.error("Error: " + status); } });
控制台报错:startWebRequest() callback parameter value ([object Object]) is not a function
错误原因
code.org Applab的startWebRequest函数参数顺序与常规HTTP请求方法不同,它的第二个参数要求是回调函数,而非请求配置对象。原代码将请求配置request放在了第二个参数位置,导致平台识别到的回调是一个对象而非函数,从而抛出错误。
解决方案
调整参数顺序,将回调函数作为第二个参数,请求配置对象作为第三个可选参数。修正后的代码如下:
var url = "https://api.apilayer.com/exchangerates_data/symbols?to="; var requestOptions = { method: "GET", headers: { "apikey": "XOIlrz9JbDcWlmjNvG9vuBwUDRByRpEt", "Content-Type": "application/json" } }; // 正确参数顺序:URL → 回调函数 → 请求配置 startWebRequest(url, function(status, json) { if (status === 200) { console.log(json.symbols); } else { console.error("Error: " + status); } }, requestOptions);
额外注意事项
- 避免在公开代码中直接暴露API密钥,防止密钥泄露;
- 补充
?to=参数后的目标货币代码(例如?to=USD),否则API可能返回无效数据; - 如果Applab对自定义请求头支持有限,可尝试将API密钥放在URL参数中(如
https://api.apilayer.com/exchangerates_data/symbols?to=&apikey=你的密钥),具体需参照API服务商的要求。
内容的提问来源于stack exchange,提问作者user21618027
相关产品推荐
相关产品推荐

