nodejs 原生代码实现http 服务器和客户端并交互

转载自:http://www.kisshc.com/nodejs-3/

服务器:

 

var http = require("http");            //提供web服务
var url = require("url");            //解析GET请求  
var query = require("querystring");    //解析POST请求

//服务
var server = function(request,response){
    //定义报文头
    response.writeHead(200,{"Content-Type":"text/json"});
    //判断是GET/POST请求
    if(request.method == "GET"){
        var params = [];
        params = url.parse(request.url,true).query;
        params['result'] = compute(params);
        response.write(JSON.stringify(params));
        response.end();
    }else{
        var postdata = "";
        request.addListener("data",function(postchunk){
            postdata += postchunk;
        })

        //POST结束输出结果
        request.addListener("end",function(){
            var params = query.parse(postdata);
            params['result'] = compute(params);
            response.write(JSON.stringify(params));
            response.end();
        })
    }

}

//计算
var compute = function(params){
    switch(params['type']){
        case "add": return parseFloat(params['num']) + parseFloat(params['num1']);break;
        case "sub": return parseFloat(params['num']) - parseFloat(params['num1']);break;
        case "mul": return parseFloat(params['num']) * parseFloat(params['num1']);break;
        case "div": return parseFloat(params['num']) / parseFloat(params['num1']);break;
    }
};

http.createServer(server).listen(8888);
console.log("Server start!");  


 

客户端:

var request = require('request');
var http = require('http');
var qs = require('querystring');

var opt = {
    host:'127.0.0.1',
    port:'8888',
    method:'POST',
    path:'/',
    headers:{
        'content-type': "application/json"
        //'accept-encoding': 'gzip'
    }
};

var body = '';
var req = http.request(opt, function(res) {

    console.log("Got response: " + res.statusCode);
    res.on('data',function(d){
        body += d;
    });
    res.on('end', function(){
        console.log(res.headers);
        console.log(body)
    });
});

req.on('error', function(e) {
    console.log("Got error: " + e.message);
});

var data = {num:"1",num1:"123",type:"add"};

req.write(qs.stringify(data));
req.end();


 

GET请求在浏览器地址栏中输入:

http://127.0.0.1:8888/?num=32&num1=13&type=add

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值