一、get方法
1.建立一个router.js文件 给出配置路由的get方法
let url = require("url");
//定义一个路由的空对象
let router = {};
let app=(require,response)=>{ //服务器封装方法
response.writeHead(200,{"Content-Type":"text/html;charset=utf-8;"});
let path = url.parse(require.url,true);
let pathname = path.pathname;
if(pathname!="/favicon.ico"){
//检测路由是否存在
if(router[pathname]){ //如果router中存在 pathname
router[pathname](require,response); //执行其对应的函数
}
response.end();
}
}
//封装get方法
app.get=(string,callback)=>{
//注册路由
router[string]=callback;
// ***相当于给router对象中添加一对键值对***
// ***router={"string":()=>{}}***
}
module.exports=app;
2.在需要的文件中引入
let app=require("./router");
//调用get()方法 参数一:路径 参数二:回调函数
app.get("/",(require,response)=>{
//相关操作 ...
response.write("我是get路由");
});
app.get 方法中回调函数的函数体还可以再进行封装
1.在router.js 中封装一个send方法
let app=(require,response)=>{
response.send=(string)=>{
response.end(string);
}
}
上述get方法可以写为:
let app=require("./router");
app.get("/",(require,response)=>{
//相关操作 ...
app.send("我是get路由");
});
二、post方法
post方法的定义和使用与get相同 send方法的封装也相同
//封装post方法
app.post=(string,callback)=>{
router._post[string]=callback;
}
三、get和post路由的检测及获取传值
1.建立一个空的路由对象,对象中再分别定义两个对象 "get路由"、"post路由"
let router = {};
router._get={}; //get路由
router._post={}; //post路由
2.根据 对象[键] 的方法去检测 并取出相应的传值
let path = url.parse(require.url,true);
let pathname = path.pathname;
if(pathname!="/favicon.ico"){
if(router._get[pathname]){ //get路由检测
let query = url.parse(require.url,true).query;
response.body = query;
router._get[pathname](require,response);
}else if(router._post[pathname]){ //post路由检测
let info="?";
require.on("data",(params)=>{
info+=params;
})
require.on("end",()=>{
// console.log(info);
let query = url.parse(info,true).query;
response.body = query;
router._post[pathname](require,response);
})
}else{
console.log("404");
}
response.end();
}
可以通过 require.method 判断数据提交方式 get/post