当前使用 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
中,所以我想将它们移到一种通用的、可重复使用的方法。
问题:
如何让它发挥作用?
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/