Node.js get/post传值 express封装路由模块

<form action="/index" method="post"> </form>
<!--  method = "post" / "get" -->

get传值

一般的路径跳转用get路由;
get路由传值:直接路径解析获取get传值 let query = path.query;

http.createServer((req, res) => {
    let path = url.parse(req.url, true);//解析req路径
    //解析路径的get传值 path.query
    let query = path.query;
    let pathname = path.pathname;
    //直接获取 get传值
    console.log(query); 
    //渲染页面
	ejs.renderFile("view/index.ejs", (err, str) => {
         if (err) {throw err;}
         res.end(str);
            });
}).listen()

post传值

表单提交的时候有post路由
通过监听事件req.on("data/end",(err, str)=>{})获取post传值

http.createServer((req,res)=>{
	let info="?";
	req.on("data",()=>{ //监听 data事件
		info += data;//拼接数据
	});
	req.on("end",()=>{ //监听 end事件
	//post传值  { userid: 'admin', userpwd: '12345' }
	console.log(url.parse(info, true).query);
		//渲染页面
		ejs.renderFile("view/index.ejs", (err, str) => {
        	if (err) {throw err; }
        	res.end(str);
        });
	});
}).listen();

express封装路由模块

  1. 定义一个路由的空对象 let router = {};
  2. 建立两种路由router._get = {};router._post = {};
  3. 在app=callback(req,res)内封装一个res.send()方法(渲染页面)
    res.send = (str) = >{res.wiryeHead(···);res.end(str);}
  4. 封装路由方法app.get(string,callback) app.post(string,callback),存储方法到router对象router._get[string] = callback(req,res);
  5. 检测get/post路由,执行封装方法,获取传值关联到res上
//1.定义一个路由的空对象
let router = {};
// 2.建立两种路由
router._get = {};
router._post = {};
let app = (req,res) = > {
    //3.封装一个send方法
    res.send = (string) => {
        res.writeHead(200, { "Content-Type": "text/html;Charset=utf-8"});
        res.end(string);
    }
    //解析路由
    let path = url.parse(req.url,true)
    let pathname = path.pathname
    if(pathname!='/favicon.ico'){
    //5.检测路由,执行对应方法,获取传值关联到res上
		if(router._get[pathname]){
		router._get[pathname](req,res);
		res.body = path.query;
		}
		else if(router._post[]){
		router._post[](req,res);
		let info = "?";
		req.("on",(data)=>{
			info += data;
		});
		req.("end",()=>{
			let query = url.parse(info,true).query;
			res.body = qurey;
		});
	}
//4.封装类似  express框架的路由   app.get(string,callback)  app.post(string,callback)
app.get=(string,callback)=>{
	router._get[string] = callback;
};
app.post=(string,callback)=>{
	router._post[string] = callback;
};
}
module.exports = app;
  1. 引用app.get(string,callback) app.post(string,callback)
app.post("/login",()=>{
	ejs.renderFile("View/main.ejs",(err,str)=>{
	    if(err){throw err;}
        res.send(str);
	});
});
app.get("/index",()=>{
	ejs.renderFile("View/index.ejs",(err,str)=>{
	    if(err){throw err;}
        res.send(str);
	});
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值