<强>一、路由强>
1,什么是路由
服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤
2,实现路由的方法
2.1,请求访问网址时,做什么事
app.get(“网址”,函数(点播,res) { }); >之前2.2,帖子请求访问网址时,做什么事
app.post(“网址”,函数(点播,res) { }); >之前,2.3,任何请求访问这个网址
app.all(“网址”,函数(){ }); >之前,注意:1、“这里的网址不分大小写,例如
app.get(“/艺术展”,函数(点播,res){//我们访问/也艺术展是可以的 res.send(“你好”); }); >之前,2,你路由到/,实际/一个# 63;id=2,性=nan也能被处理。
3路由中正则表达式的使用
3.1,正则表达式中,未知部分用圆括号分组,然后可以用req.params[0],[1]得到.req。参数类数组对象。
app.get(学生/^ \/\/(\ d{10})/美元,函数(点播,res) { res.send(“学生信息,学号“+ req.params [0]); }); >之前3.2,冒号写法(推荐)
var=需要表达(表达); 应用var=表达();//冒1号 app.get(“/学生/:id”,函数(点播,res) { var id=req.params (" id ");//得到id的值 var reg=/^ \ [d] {6} $/; 如果(reg.test (id)) { res.send (id); 其他}{ res.send(“请检查格式”); } });//冒号2 app.get(“/用户名/:oid”功能(要求,res) { var用户名=req.params(“用户名”);//得到用户名的值 var oid=req.params (“oid”);//得到//oid的值 res.write(用户名); res.end (oid); }); app.listen (3000); >之前 ,运行结果:冒号1:
,冒号2:
<强>二,中间件强>
1,什么是中间件
应用于应用之间,充当连接服务的,例如上面的get、post请求就是中间件
2,表达中所有的路由(中间件)的顺序(很重要)
2.1, next()方法
var=需要表达(表达); 应用var=表达(); app.get(“/?函数(下)要求,res, { console.log (1); next ();//如果没有下参数,就只会conlose出来,而不会是1、2 }); app.get(“/?函数(点播,res) { console.log (2); }); app.listen (3000); >之前2.2,顺序冲突:下面这两个路由,看起来没有关系,但其实是有冲突的,因为管理员可以当做用户名登录可以当做id
var=需要表达(表达); 应用var=表达(); app.get(“/用户名/:id”、功能(要求,res) { console.log (" 1 "); res.send(“用户信息”+ req.params.username); }); app.get (“/admin/登录”,函数(点播,res) { console.log (“2”); res.send(“管理员登录”); }); app.listen (3000) >之前 运行结果:当我们访问172.0.0.1:3000/admin/登录时只会输出,,用户信息admin 而不会是管理员登录2.3,解决顺序冲突
2.3.1,具体的往上写,抽象的往下写
var=需要表达(表达); 应用var=表达();//具体的 app.get (“/admin/登录”,函数(点播,res) { console.log (“2”); res.send(“管理员登录”); });//抽象的 app.get(“/用户名/:id”、功能(要求,res) { console.log (" 1 "); res.send(“用户信息”+ req.params.username); }); app.listen (3000) >之前 运行结果:当我们访问172.0.0.1:3000/admin/登录时输出,管理员登录,而不会是用户信息admin,2.3.2,检索数据库
var=需要表达(表达); 应用var=表达(); app.get(“/用户名/:id”,函数(下)要求,res, { var用户名=req.params.username;//检索数据库,如果用户名不存在,那么下() 如果检索数据库){ console.log (" 1 "); res.send(“用户信息”) 其他}{ next (); } }); app.get (“/admin/登录”,函数(点播,res) { console.log (“2”); res.send(“管理员登录”); }); app.listen (3000)node . js中路由,中间件,通用电气请求和帖子请求的参数详解