首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从函数发送响应或获得响应?(node.js)

如何从函数发送响应或获得响应?(node.js)
EN

Stack Overflow用户
提问于 2022-10-11 10:36:58
回答 1查看 26关注 0票数 0

我正在使用第三方短信服务,我想在一个不同的文件中使用。当我点击api url时,我想从第三方api发送服务器响应。我该怎么做?

app.js

代码语言:javascript
复制
app.get('/sendansms', (req, res) => {
  let response = sendSms(res);
  console.log( "is response     ", response);
  res.send(response)
})

smsservice.js

代码语言:javascript
复制
var request = require("request");

module.exports.sendSms = (params) => {
    var options = {
      'method': 'POST',
      'url': 'https://smsplus.xxxxxxx.com/api/v3/send-sms',
      'headers': {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        "api_token": "xxxxx-xxxxx-xxxxx-xxxxx",
        "sid": "xxxxxx",
        "msisdn": "xxxxxx",
        "sms": "Test SMS",
        "csms_id": "xxxxxxx"
      })
    
    };
    request(options, function (error, response) {
      if (error) throw new Error(error);
      console.log(response.body);
    });
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-11 10:49:55

您需要使您的sendSms函数承诺库返回承诺,而在您的路由函数中,您需要使函数异步等待该承诺。

在你的应用中

代码语言:javascript
复制
app.get('/sendansms', async(req, res) => {   
    let response = await sendSms(req);   
    console.log( "is response     ", response);
    res.send(response) 
})

smsservice.js

代码语言:javascript
复制
var request = require("request");

odule.exports.sendSms = (params) => {
   return new Promise((resolve, reject)=> {
      try {
       var options = {
      'method': 'POST',
      'url': 'https://smsplus.xxxxxxx.com/api/v3/send-sms',
      'headers': {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        "api_token": "xxxxx-xxxxx-xxxxx-xxxxx",
        "sid": "xxxxxx",
        "msisdn": "xxxxxx",
        "sms": "Test SMS",
        "csms_id": "xxxxxxx"
      })
    
    };
    request(options, function (error, response) {
      if (error) throw new Error(error);
      console.log(response.body);
       return resolve(response.body);
    });
      } catch(e) {
        return reject(e)
     }

})
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74026726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档