如何在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 忽略证书。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容