nodejs处理post,get请求

模块化处理得代码,首先是进入服务start.js文件

var ser = require('./webserve');//服务模块
var handler = require('./handle');//处理模块
var router = require('./router');//路由模块

var handle = {};
handle['/'] = handler.index;
handle['/test'] = handler.test;
handle['/requide'] = handler.requide;//处理模块得函数封装到对象数组里
ser.serve(router.router,handle);

然后是server.js,文件得主要作用是获取路由路径和客户端传递的参数,调用参数传给处理的函数

var http = require('http');//服务创建库
var fs = require('fs');//文件读取库
var url =require('url');//url解析库,参数解析等
var querystring = require('querystring');

var requestserve = function(router,handle){
    var onrequest = function(request,response){
    var pathname = url.parse(request.url).pathname;  //剔除url其他字符串,只要当前的文件路径
    console.log(pathname);
    
    var  data = "";
    request.on('error',function(err){//处理post的数据方法
        console.error(err);
    }).on('data',function(chuck){
        data+=chuck; //直接获取的是字符串数据
    }).on('end',function(){
        if(request.method ==='POST'){
            router(handle,pathname,response, querystring.parse(data));//将字符串转为json数据
        }else if(request.method==='GET'){
            var parm = url.parse(request.url,true).query;//得到url中的数据转为json,第二个参数如果为false时返回的是一个字符串
            router(handle,pathname,response, parm);
        }
        
    })
    
    }
    var serve = http.createServer(onrequest)
    serve.listen(3000,'127.0.0.1');
    console.log('服务运行在本地3000端口');
} 

exports.serve = requestserve;

 router.js是处理参数和路由

function router(handle,pathname,response,parm){
    if(typeof handle[pathname]==='function'){
        handle[pathname](response,parm);
    }else{
        console.log('not found page');
    }
}

exports.router = router;

handle函数是处理不同的路由然后返回的数据,页面等

fs = require('fs');
function index(response){
    console.log('index ');
    response.writeHead(200,{'Content-Type':'text/html'});
    var readHtml = fs.createReadStream(__dirname+'/index.html');
    readHtml.pipe(response);
}
function test(response){
    response.writeHead(200,{'Content-Type':'text/html'});
    var readHtml = fs.createReadStream(__dirname+'/test2.html');
    readHtml.pipe(response);
}
function requide(response,parm){
    response.writeHead(200,{'Content-Type':'application/json'});
    response.end(JSON.stringify(parm));
}
module.exports={index,test,requide};

路由传参得到的json数据 

 

index.html里面是表单数据

<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
    <form action="/requide" method="POST">
        name:<input type="text" name="name" />
        age: <input type="text" name="age"/>
        <input type="submit" value="Submit">
    </form>
    测试文件
</body>

测试调用页面如下:

点击提交按钮提交表单数据 得到json数据

猜你喜欢

转载自blog.csdn.net/u013455430/article/details/88659685