无法处理node.js中的POST请求

时间:2012-12-10 08:02:11

标签: node.js http post get http-headers

我有一个在http中编写node.js服务器的任务,这就是为什么我不能使用http模块,因为您很快就会看到。无论如何,我需要能够听取GET和POST请求。我理解它的方式GET仅触发data事件,并发布dataend。这是我的代码:

function Server(resourceMap, rootFolder) {

    this.resourceMap = resourceMap;
    this.rootFolder = rootFolder;

    function connectionHandler(socket) {
        console.log('server connected');
        console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);
        socket.setEncoding('utf8');
        socket.on('data',function(data) {
                var re = new RegExp("^( *)(GET)", "i");                 
                if (data.match(re) != null) {
                    console.log("Handling GET request");
                    router.route(data,socket,handle,resourceMap,rootFolder);
                }
                else {
                    (function() {
                        var postData = data;
                        socket.on('data',function(data) {
                            postData += data;
                        });
                        console.log(postData);
                        socket.on('end',function(postData) {
                            console.log("END");
                            console.log("Handling POST request");
                            router.route(postData,socket,handle,resourceMap,rootFolder);
                        });
                    });
                }
            });
    }

    this.server = net.createServer(connectionHandler);

    this.port = undefined;

    this.startServer = function(port) { //Maybe change backlog for security reasons
        this.port = port;
        this.server.listen(port, function() { //'listening' listener add handle object here
            console.log('server bound');});
    }
}

GET请求工作得很好。使用POST它甚至不输入匿名函数。

任何想法为什么以及如何解决它?

编辑:已解决 - 我定义了该功能但没有调用它:) 如果您对我的设计有任何意见,我很乐意听到,因为我是node.js和JavaSCript的新手

谢谢

1 个答案:

答案 0 :(得分:1)

常见错误:定义了一个函数但没有调用。

你可以:

在正则表达式

之后删除function关键字

或者在功能之后添加()(建议更多)