【发布时间】:2017-02-02 13:54:00
【问题描述】:
我对 NodeJS 很陌生,这是我第一次使用 Express 4,我正在尝试围绕命令行应用程序构建一个简单的 RESTful 前端。最终将只需要一个 GET 和一个 POST,而 POST 处理大约 3 或 4 个不同的参数。 GET 应该使用所有默认参数调用命令行应用程序,这基本上只是一个状态检查,并在完成后返回退出状态。 POST 将在命令行上传递 POST 参数。我知道这基本上需要一个异步调用,例如 child_process.execFile(),但我似乎无法弄清楚如何从回调函数中实际返回响应。
这是我作为起点的教程,省略了mongoose依赖,因为我不需要MongoDB,所以我基本上只是跟着它到你启动服务器的地步。在这一点上,我很迷茫。我一直讨厌写异步代码...
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser');
var child_process = require('child_process');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080; // set our port
var router = express.Router(); // get an instance of the express Router
router.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
router.get('/myapp/status', function(req, res) {
console.log(req.user);
child_process.execFile(
'casperjs',
['myfile.js', '--cmd="Status"', '--user="myuser"', '--pass="#mypass"'],
null,
function(response) {
// ???
}, res);
});
app.use('/api', router);
app.listen(port);
console.log('Magic happens on port ' + port);
【问题讨论】:
标签: node.js express asynchronous