你好,我一直在尝试在我的 Jmeter 板上实现OneSignal API,我想知道是否有可能在Express服务器内部进行API外部调用。
下面是一个示例:
var sendNotification = function(data) {
var headers = {
"Content-Type": "application/json; charset=utf-8",
"Authorization": "Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj"
};
var options = {
host: "onesignal.com",
port: 443,
path: "/api/v1/notifications",
method: "POST",
headers: headers
};
var https = require('https');
var req = https.request(options, function(res) {
res.on('data', function(data) {
console.log("Response:");
console.log(JSON.parse(data));
});
});
req.on('error', function(e) {
console.log("ERROR:");
console.log(e);
});
req.write(JSON.stringify(data));
req.end();
};
这是应用程序路径
app.post('/path', function(req, res){
var message = {
app_id: "5eb5a37e-b458-11e3-ac11-000c2940e62c",
contents: {"en": "English Message"},
included_segments: ["All"]
};
sendNotification(message);
});
谢谢你,谢谢你
5条答案
按热度按时间wkftcu5l1#
我想知道是否有可能在express服务器内部进行API外部调用。
当然,您可以通过node.js应用程序使用
http.request()
(如您所示)或构建在request module之上的更高级别的模块(如request module)来连接任何外部服务器。下面是来自请求模块主页的一个简单示例:
或者,使用承诺:
编辑2020年1月-维护模式下的request()模块
仅供参考,
request
模块及其衍生模块(如request-promise
)目前处于维护模式,不会积极开发以添加新特性。您可以阅读更多关于here推理的信息。此表中有一个替代方案列表,并对每个替代方案进行了一些讨论。我自己一直在使用got()
,它从一开始就使用promises构建,使用起来很简单。xfyts7mz2#
您可以使用Axios客户端,因为Axios是一个基于Promise的HTTP客户端,适用于浏览器和node.js。
在处理需要更复杂的事件链的代码时,使用“承诺”是一个很大的优势。编写异步代码可能会让人感到困惑,而“承诺”是解决此问题的几种解决方案之一。
首先使用
npm install axios --save
在应用程序中安装Axios然后你可以用这个代码
jdzmm42g3#
请尝试一下这个解决方案。我用过了,它对我很有效。