第六课 自己实现路由改进,针对不同请求的路径进行响应

1 server.js

var http = require(‘http‘);
var url = require(‘url‘);
function start(route,handler)
{
function onRequest(req,res)
{
var pathName = url.parse(req.url).pathname;
//客户端页面传递过来的route 函数
route(pathName,handler,res);
}
http.createServer(onRequest).listen(5000);
console.log(‘Server Started‘);
}

exports.start = start;

2 route.js

function route(pathName,handler,res)
{
console.log(‘router user request url:‘+pathName+‘\n‘);
if(typeof handler[pathName]===‘function‘)
{
handler[pathName](res);
}else{
console.log(‘No request handler found for ‘+pathName);
}
}
exports.route = route;

3 requestHandlers.js

var exec = require(‘child_process‘).exec;
//使用 response直接输出 就不会阻塞其他请求
function start(res){
exec("ls -lah",function(error, stdout, stderr){
res.writeHead(200,{"Content-Type":"text/plain"});
res.write(‘start...‘);
res.write(stdout);
res.write(‘end...‘);
res.end();
});
}

function upload(res){
res.writeHead(200,{"Content-Type":"text/plain"});
res.write(stdout);
res.end();
}

exports.start = start;
exports.upload = upload;

4 index.js

var server = require(‘./server‘);
var route = require(‘./route‘);
var requestHandlers = require(‘./requestHandlers‘);
var handle ={}
handle["/"]= requestHandlers.start;
handle["/start"]= requestHandlers.start;
handle["/upload"]= requestHandlers.upload;

server.start(route.route,handle);

//分析 从index.js开始 handle对象存储的是 路由字符串和方法指针

server.js 取得当前用户请求的路径 来执行 路径对应的方法 实际执行的是requestHandlers中的方法

时间: 2024-10-13 07:42:41

第六课 自己实现路由改进,针对不同请求的路径进行响应的相关文章

Asp.Net Web API 2第六课——Web API路由和动作选择

Asp.Net Web API 导航 Asp.Net Web API第一课——入门http://www.cnblogs.com/aehyok/p/3432158.html Asp.Net Web API第二课——CRUD操作http://www.cnblogs.com/aehyok/p/3434578.html Asp.Net Web API第三课——.NET客户端调用Web API http://www.cnblogs.com/aehyok/p/3439698.html Asp.Net Web

Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击

Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击 文/玄魂 目录 Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击...................... 1 DoS............................................................................................................... 2 DDoS.......................

Servlet 第六课: Session的使用

课程目标: 通过这节课,我们能够学会加入session,学会调用session,以及大概懂得session存在的情况. 课程具体: 1.Session仅仅是存在于浏览器.比方我们打开浏览器获得我们所须要的session,我们在同一个浏览器再打开,我们所须要的这个session是还存在的. 可是假设我们换用其它的浏览器或者直接关闭浏览器,那么这个session就会过期. 2.Session –Session 是用来跟踪用户当前状态的一种机制,是针对浏览器和server的一对一关系. –Sessio

[译]Quartz.NET 框架 教程(中文版)2.2.x 之第六课 CronTrigger

第六课 CronTrigger CronTrigger比SimpleTrigger更常用,当你需要一个基于日历般概念的作业调度器,而不是像SimpleTrigger那样精确指定间隔时间. 使用SimpleTrigger,你可以这样指定触发时间表例如“每周五的中午”,或是“每周末的上午9:30”,甚至是“一月份每周一.三.五上午9:00到10:00之间每5分钟”. 虽然如此,跟SimpleTrigger一样,CronTrigger也需要指定startTime让调度器生效,指定endTime让调度器

2018-08-24 第三十六课

第三十六课 非关系统型数据库-mangodb 目录 二十四 mongodb介绍 二十五 mongodb安装 二十六 连接mongodb 二十七 mongodb用户管理 二十八 mongodb创建集合.数据管理 二十九 php的mongodb扩展 三十 php的mongo扩展 三十一 mongodb副本集介绍 三十二 mongodb副本集搭建 三十三 mongodb副本集测试 三十四 mongodb分片介绍 三十五 mongodb分片搭建 三十六 mongodb分片测试 三十七 mongodb备份

Python第十六课(模块3)

Python第十六课(模块3)    >>>思维导图>>>中二青年 模块与包 模块 """ 三种来源 1.内置的 2.第三方的 3.自定义的 四种表示形式 1.py文件(******) 2.共享库 3.文件夹(一系列模块的结合体)(******) 4.C++编译的连接到python内置的 """ 导入模块 """ 先产生一个执行文件的名称空间 1.创建模块文件的名称空间 2.执行模

第六课 简易网页制作展示

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <link href="test1 html.css" rel="stylesheet" type="text/css" /> </head>

【C语言探索之旅】 第二部分第六课:创建你自己的变量类型

0 内容简介 1.课程大纲 2.第二部分第六课: 创建你自己的变量类型 3.第二部分第七课预告: 文件读写 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

BeagleBone Black板第六课:C++编程控制GPIO基础

BBB板第六课:C++编程控制GPIO基础 在一上课我们通过Shell脚本编程实现了对GPIO端口的简单输出控制,实现对两个LED指示灯的交替点亮和关闭,接下来的一两节课,将通过C++程序来实现Shell脚本的功能.为了实现对应的程序控制,我查阅了好多资料,测试过程中发觉网上的一些程序套用过来总是出现各种各样的编译错误,压根就控制不了BBB板,不知是我的BBB板太新,还是以前的程序太旧.最后还是从头开始,重新研究BBB板的文件系统,找出头文件,找出所有相关的函数,终于实现GPIO的C++程序控制