非常基本的请求响应web服务器在NodeJS



我正在学习节点JS,并希望创建一个非常基本的单一用途的web服务运行服务器上的一个windows命令(在ejabberd聊天服务器中创建一个新用户),客户端可以向该命令传递一个特定的参数(我想使用ajax)。

我一直在使用基本的"createServer"教程作为模板:

var sys = require('util')
var http = require('http'); 
var exec = require('child_process').exec;
var path = '"C:\Program Files\ejabberd-2.1.8\bin\ejabberdctl"'; 
http.createServer(function (req, res) {
       var cmd = path + ' register nodeuser ejabberhost xxxxxx';
       var child = exec(cmd, function (error, stdout, stderr) {
       var msg;
        if (error !== null) {
          msg = 'Error : ' + error; 
        }
        else{
          msg = stdout;
        }
           // this will prob be JSON
        res.writeHead(200, {'Content-Type': 'text/plain'}); 
        res.end(msg); 
}); 
}).listen(1337, "localhost"); 
console.log('Server running at http://localhost:1337/');

在上面的代码中,'nodeuser'需要替换为在请求中使用ajax从客户端传递的参数。我该如何调整这段代码来实现这一点呢?

先不考虑输入卫生问题,下面是如何做到这一点的:

http.createServer(function (req, res) {
    var dataInput;
    if (req.url === '/foo') {
        req.on('data', function (chunk) {
            dataInput = chunk.toString();
        })
    }
    if (dataInput !== undefined) {
        var cmd = path + ' register nodeuser ejabberhost ' + dataInput;
    }
    ...

最新更新