首页 > 代码库 > NWJS fs, url, http 组合小型的服务器 ( 满足html请求, get, post 传值 )

NWJS fs, url, http 组合小型的服务器 ( 满足html请求, get, post 传值 )

<script type="text/javascript">
    /*
     * 引入模块
     */
    var http = require(‘http‘);
    var url = require(‘url‘);
    var fs = require(‘fs‘);
    
    /*
     * 获取项目根路径(存放 WEB 项目的根目录)
     */
    var rootPath = global.__dirname + ‘/Node‘;
    
    /*
     * 创建web服务器对象 createServer
     * http.createServer(callback(){}): 创建服务器
     * callback("客户端请求对象", "服务器响应对象"): 响应服务器请求的回调函数
     */
    var server = http.createServer(function(request, response) {
        if(request.method.toUpperCase() == ‘GET‘){
            var pathUrl = url.parse(request.url); 
            if(pathUrl.pathname == ‘/‘){
                pathUrl.pathname = "/index.html";
            }
            returnHtml(rootPath + pathUrl.pathname, request, response);
            /*
             * 获取get传值的方法
             * querystring.parse("需要解析的字符串"), NE.JS不支持;
             */
            console.log(returnFlied(pathUrl.query));
        } else {
            /*
             * 获取 POST 请求
             * request.on(‘data‘, callback(读取到的数据){}): 读取缓冲区数据的事件
             * request.on(‘end‘, callback(){}): 打他事件结束后执行的事件
             */
            var postStr = ‘‘;
            request.on(‘data‘, function(data){
                postStr += data;
            });
            request.on(‘end‘, function(){
                console.log(returnFlied(postStr));
            });
        }
    });
    
    /*
     * 启动服务器的方法 listen ( 服务器响应事件要放在这句代码之前 )
     * server.listen("端口号", "ip或域名"): 
     */
    server.listen(80, ‘192.168.3.143‘);
    
    /*
     * 根据请求读取文件的方法
     */
    function returnHtml(path, request, response) {
        fs.readFile(path, function(err, data){
            response.setHeader("content-type", ‘text/html‘);
            if(err){
                response.end("<h1>404 你访问的页面不存在</h1>");    
            }
            else{
                response.end(data);                
            }
        });
    }
    
    /*
     * 解析 GET 和 POST 请求的方法
     * 自己写的
     */
    function returnFlied(str){
        var json = {};
        var atr = str.split(‘&‘);
        for(var i = 0; i < atr.length; i++){
            var keyVal = atr[i].split(‘=‘);
            json[keyVal[0]] = keyVal[1];
        }
        return json;
    }
</script>

 

NWJS fs, url, http 组合小型的服务器 ( 满足html请求, get, post 传值 )