如何在NodeJs中执行post操作

工作中有一个需求,需要调用邮件接口发送邮件,也就是需要执行post操作。这里记录下遇到的坑。

代码示例

var https = require('https');
function sendmail(users){
let post_data = new Buffer(JSON.stringify(
{
from:'',
to:'',
cs:'',
ms: users.join(','),
subject:'邮件标题',
content:'邮件内容'
}
));
let opts = {
hostname: appConfig.mailHost,
port:443,
path: '/api/send/mail',
method: 'POST',
rejectUnauthorized:false,
headers:{
'Content-Type' : 'application/json;',
'Content-Length' : post_data.length,
}
};
let req = https.request(opts, function(res) {
var _data='';
res.on('data', function(chunk){
_data += chunk;
});
res.on('end', function(){
//console.log("\n sendmail--->> \n result:",_data)
logger.info("\n sendmail--->> \n result:",_data);
});
});
req.write(post_data);
req.end();
}

遇到的坑

这里有几个需要注意的坑:

http和https依赖的库不一样,根据实际情况引用。

data必须进行处理 new Buffer(JSON.stringify(mail)),特别是Buffer,如果不作处理,有中文的时候会导致数据长度不符,服务器端解析json异常。

如果https的安全证书不是合法的,可以使用rejectUnauthorized:false 忽略证书。

你可能感兴趣的:(如何在NodeJs中执行post操作)