javascript - 重构npm请求方法代码

标签 javascript node.js request

当前使用 npm request,我想将代码重构为以下内容:

app.post('/work_order',function (req,res) {
  var work_order = req.body.work_order;
  var url = soapURI + work_order;
  reqMethod(url);
});

app.get('/work_order/:work_order', function (req, res) {
  var work_order = req.params.work_order;
  var url = soapURI + work_order;
  reqMethod(url);
});

function reqMethod (url){
  request({
    url: url,
    json: true
  }, function (error, response, body) {
    if (!error && response.statusCode === 200) {
      // console.log(body); // Print the json response
      res.send(body);
    }
  });
}

问题是 reqMethod 现在是一个 promise ,而 res.send(body) 是其中的一部分。我不能简单地返回 res.send(body)。我有 2 段重复的代码(每一段都与该方法的代码完全相同)位于 .get.post 中,所以我想将它们移到一种通用的、可重复使用的方法。

问题:

  1. 如何让它发挥作用?

  2. request 是一个好的 npm 模块吗?您能否提出一些替代方案,也许是更好的方案?

谢谢

最佳答案

您有 2 个选择。

选项1:将结果(res)参数传递到reqMethod中:

app.post('/work_order',function (req,res) {
  var work_order = req.body.work_order;
  var url = soapURI + work_order;
  reqMethod(url, res);
});

app.get('/work_order/:work_order', function (req, res) {
  var work_order = req.params.work_order;
  var url = soapURI + work_order;
  reqMethod(url, res);
});
function reqMethod (url, res){
  request({
    url: url,
    json: true
  }, function (error, response, body) {
    if (!error && response.statusCode === 200) {
      // console.log(body); // Print the json response
      res.send(body);
    }
    else {
      //send error here
    }
  });
}

选项 2:向 reqMethod 添加回调

app.post('/work_order',function (req,res) {
  var work_order = req.body.work_order;
  var url = soapURI + work_order;
  reqMethod(url, function(err, body) {
    res.send(body)
  );
});

app.get('/work_order/:work_order', function (req, res) {
  var work_order = req.params.work_order;
  var url = soapURI + work_order;
  reqMethod(url, function(err, body) {
    res.send(body)
  );
});
function reqMethod (url, cb){
  request({
    url: url,
    json: true
  }, function (error, response, body) {
    if (!error && response.statusCode === 200) {
      // console.log(body); // Print the json response
      cb(null, body);
    }
    else {
      cb(error)
    }
  });
}

关于javascript - 重构npm请求方法代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39089267/

相关文章:

javascript - 链接无法在新窗口中打开

javascript - 更新 Div 中的文本的问题

javascript - 如何过滤该数组中大于或等于 90 的标记?

mysql - 无法保留左连接中第一个表的 ID

javascript - 为什么本地的 .css 文件和 .js 文件没有链接到 index.html 文件?

node.js - 将自定义 http header 添加到 chai 请求

java - 在不同的线程中发出 Volley 请求

javascript - 无法从 li 获取自定义属性

javascript - jQuery 显示/隐藏带有按名称选择选项的 div

c# - 简单 HTTPS 请求中的 System.Net.WebException