做一个简单post服务端和一个客户端

  1. 服务端代码

    // postserver.js
    // 获取客户端post来的title、text参数,然后返回给客户端
    
    var http = require('http');
    var querystring = require('querystring');
    
    var server = http.createServer(function(req, res) {
        var post = '';
    
        req.on('data', function(chunk) {
        post += chunk;
        });
    
        req.on('end', function() {
        post = querystring.parse(post);
    
        res.write(post.title);
        res.write(post.text);
        res.end();
        });
    }).listen(3000);
    

    在控制台中执行node postserver.js,开启http服务,监听3000端口。

    这是一个没有使用第三方库的服务器,直接由Node.js实现http服务器并且对客户端的请求作出反应,所以从代码上看会比其它php,jsp等复杂很多。其实是其它的语言已经把这部分功能剥离到了http服务器上,而Node.js需要自己实现http服务器,如果采用Express框架,这部分将可以和其它的一样精简。

  2. 客户端代码

    // httprequest.js
    
    var http = require('http');
    var querystring = require('querystring');
    
    var contents = querystring.stringify({
        title: 'Hello ',
        text: 'Arthur',
    });
    
    var options = {
        host: '127.0.0.1',
        port: '3000',  //非80端口需要指定,如果是80端口则可以省略。
        path: '/',
        headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': contents.length
        }
    };
    
    var req = http.request(options, function(res) {
        res.setEncoding('utf8');
        res.on('data', function(data) {
        console.log('request begin:');
        console.log(data);
        console.log('request end.');
        console.log('--------------------');
        });
    });
    
    req.write(contents);
    req.end();
    

    开一个新的控制台,执行node httprequest.js, 可以得到服务端返回的结果:

    $ node postclient.js 
    request begin:
    Hello 
    request end.
    --------------------
    request begin:
    Arthur
    request end.
    --------------------
    

这里我们发现,服务端每通过res.write()一次,客户端的http.request中的function(res){...}便会被执行一次。值得注意下。

你可能感兴趣的:(做一个简单post服务端和一个客户端)