路由器、中间件

1.路由器

 用来管理路由,将同一个功能模块下的所有的路由统一管理,最终路由器被WEB服务器使用

路由器

const express=require('express'); //引入express

const r=express.Router();//创建路由器对象

//添加路由

module.exports=r; //导出路由器对象

WEB服务器引入并使用路由器

const userRouter=require('./user.js');

app.use('/user',userRouter);

 练习:编写app.js文件,创建WEB服务器,添加用户列表的路由(get  /list),响应‘这是用户列表’;添加商品列表的路由(get  /list),响应‘这是商品列表’

 练习:完成用户路由器user.js,添加用户列表路由(get /list),导出路由器,最后在app.js下引入路由器并使用,添加前缀/user

const express=require('express');
//引入用户路由器
console.log(userRouter);
//创建WEB服务器
const app=express();
//设置端口
app.listen(8080);

//商品列表(get /list)

app.get('/product/list',(req,res)=>{
  res.send('这是商品列表');
});



//用户列表(get /list)

app.get('/user/list',(req,res)=>{
  res.send('这是用户列表');
});

2.中间件

 用于拦截对服务器的请求

 分为应用级中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件

 (1)应用级中间件

  就是一个函数,一旦拦截到以后会自动调用这个函数

  app.use( 要拦截的URL, 函数 )

  练习:添加到购物车的路由(get  /shopping),传递商品的价格price,添加中间件,实现对商品价格打九折,最后响应‘商品的价格:xxxx’

const express = require("express");
const app = express();
app.listen(8080);

/*function fn(req,res,str){
 console.log(req.query);
 req.query.price*=0.9;
 str();
 }
app.use('/shopping',fn);
app.get('/shopping',(req,res)=>{
 res.send('商品的价格:'+req.query.price)
})*/

  http://127.0.0.1:8080/shopping?price=1000

 (2)路由级中间件

  就是路由器的使用

 (3)内置中间件

  托管静态资源中间件

  如果浏览器端请求静态资源(html,css,js,图像...),不需要通过路由去响应,而是自动的到某个目录下寻找。

  app.use( express.static('要托管的目录') )

  练习:编写04_three.js文件,创建WEB服务器,托管静态资源到public目录,包含文件login.html,点击提交向服务器请求(post  /mylogin),获取传递的数据,响应‘登录成功’

   

//html代码

<form method="post" action="/mylogin">
  用户<input type="text" name="user"><br>
  密码<input type="text" name="password"><br>
  <input type="submit">
</form>



//JS代码

const express=require('express');
//1.引入body-parser中间件模块
const bodyParser=require('body-parser');
//引入查询字符串模块
//const querystring=require('querystring');
//创建WEB服务器
const app=express();
//设置端口
app.listen(8080);
//托管静态资源到public目录
app.use( express.static('./public') );
//2.使用body-parser中间件,将所有post请求的数据解析为对象
//body-parser中间件也是内置的中间件,也可以使用express
app.use( express.urlencoded({
  extended:false  //是否使用第三方的qs模块解析为对象
}) );
//添加路由(post /mylogin)
app.post('/mylogin',(req,res)=>{
  //3.获取post传递的数据
  console.log(req.body);
  res.send('登录成功');
});

 (4)第三方中间件

  都是以第三方模块的形式存在,需要先下载安装

  body-parser中间件

    下载安装   npm   install  body-parser

//1.引入body-parser

//2.使用body-parser将所有post请求的数据解析为对象

app.use( express.urlencoded({

  extended:false  //是否使用第三方的qs模块解析为对象

}) );

//3.在路由中获取post请求的数据

req.body

  其它第三方中间件:https://www.expressjs.com.cn/resources/middleware.html

  文件上传中间件:http://www.codece.com/archives/173

3.mysql模块

 是Node.js下专门用于操作mysql数据库的模块

 下载安装

    npm  install   mysql

 连接数据库

   mysql.exe  -h127.0.0.1  -P3306  -uroot   -p

   mysql  -uroot

   mysql  -uroot<拖拽SQL脚本文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Golang 中,中间件是一种常见的设计模式,用于在请求处理过程中添加公共功能、处理请求前后的逻辑等。下面是一种常见的 Golang 中间件实现原理: 1. 定义一个中间件函数类型,它接受一个 `http.Handler` 参数,并返回一个新的 `http.Handler` 对象。例如: ```go type MiddlewareFunc func(http.Handler) http.Handler ``` 2. 编写一个具体的中间件函数,它符合上述定义的中间件函数类型。该函数通常会包装原始的 `http.Handler` 对象,添加额外的逻辑或修改请求/响应。 ```go func LoggerMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 添加日志记录逻辑 log.Println("Handling request:", r.URL.Path) // 调用下一个处理器 next.ServeHTTP(w, r) }) } ``` 3. 在路由处理器中使用中间件。通过将中间件函数应用到路由处理器上,可以实现对该路由及其子路由的请求进行拦截和处理。 ```go func main() { // 创建一个路由器 router := mux.NewRouter() // 应用中间件路由器 router.Use(LoggerMiddleware) // 添加路由处理器 router.HandleFunc("/", handler) // 启动服务器 http.ListenAndServe(":8080", router) } ``` 在上述例子中,`LoggerMiddleware` 是一个简单的日志记录中间件,它会在处理每个请求之前输出请求的路径信息。通过调用 `router.Use(LoggerMiddleware)`,该中间件会应用到所有的路由上。 这是一种常见的中间件实现原理,你可以根据自己的需求编写更复杂的中间件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值