欢迎您访问宜州一中 您可以登录 或注册
 
收藏本站 简繁转换
一方天地育桃李,三尺讲台竞风采             宜州区一中在宜州博物馆举行“人杰地灵读宜州”故事分享会             宜州一中举行2024届中考百日誓师大会             龙腾启新 筑梦未来 ——宜州区第一中学欢庆2024年元旦文艺晚会             走进嘉联丝厂 畅享研学之乐 ——宜州区第一中学开展研学实践活动             2023年河池市宜州区第一中学/宜州区红卫学校家庭经济困难大学新生入学资助项目发放名册(第二批)             展科技志向,圆飞行梦想 ——宜州区一中2025届举行无人机大赛             2023年河池市宜州区第一中学\红卫学校 家庭经济困难大学新生入学资助项目发放名册(第一批)             法制进校园 以法促成长 ——宜州一中举行“三姐护蕾”法治进校园活动             “英”你精彩,“语”你同行 —— 我校2025届举行英文风采大赛            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

Get与Post方法请求——更新后的代码

doramart 2024-05-13 12:39:48 技术文档231643
Get与Post方法请求更新后的代码

更新后的代码

以下是今天更新后的代码:

App.js 内容

var http = require("http");

module.exports = App;

function App(){
    // 插件有序列表
    var middleList = this._middleList = [];

    var self = this;
    // DOTO ,  GET方法的处理函数
    this._getHandle = null;

    // DOTO ,  POST方法的处理函数
    this._postHandle = null;

    // request事件响应函数
    function handle(req,res){


        if(middleList.length === 0){        
        }else{

            // 循环执行插件
            var middleIndex = 0; // 插件索引

            execMiddle();

            // 执行这个函数时,会自动执行下一个middle插件。
            // 至于这个函数的执行,是由插件所控制。
            function next(){
                middleIndex += 1;
                execMiddle();
            }

            // 执行插件函数
            function execMiddle(){
                var middle = middleList[middleIndex];
                if(middle){
                    middle(req,res,next);
                }else{
                   // 判断是GET还是POST方法
                   switch(req.method){
                         case "GET":
                               if(self._getHandle){
                                    self._getHandle(req,res);
                               }
                         break;
                         case "POST":
                                if(self._postHandle){
                                      self._postHandle(req,res);
                                }
                         break;
                   }                          
                }
            }        

        }


    }

    this._server = http.createServer(handle);

}

// 加入功能栈
App.prototype.use = function(middle){
    this._middleList.push(middle);
}

App.prototype.get = function(handle){
    this._getHandle = handle;
}

App.prototype.post = function(handle){
    this._postHandle = handle;
}

// 监听端口
App.prototype.listen = function(){
    this._server.listen.apply(this._server,arguments);
}

static.js 内容

var url = require("url"),
    fs = require("fs");

// 把URL转换成资源路径
function url2path(url_str){
    var urlObj = url.parse(url_str); 
    var path = urlObj.path;
    return path;
}

module.exports = function static(parent_path){

    return function(req,res,next){  // 这个插件无需调用next。
       var path = url2path(req.url);
       function callback(err,data){
             if(err){
                 // res.statusCode = 404;
                 // 如果找不到资源,直接next()
                 next();
             }
             else{
                res.write(data);
                res.end();  
             }
       }
       fs.readFile(parent_path+path,callback);
    }

}

文章评论

取消回复
登录 参与评论

评论列表(