跳转到内容
加入 「福强私学」,学习和了解更多关于技术、管理与人生的精彩内容。

HonoJS里的Middleware是什么?

middleware的概念其实很简单,也就是拦截器或者AOP里经常讲的横切关注点,总之就是处理一些通用的非业务逻辑。

middleware的定义也很简单,就是一个异步函数,接受context和next(handler)作为参数,在函数实现中提供额外逻辑的同时,在合适时机/位置调用next(handler)就可以了:

const middleware = async (c, next)=> {
....
await next()
...
}

要使用middleware,可有两种方式,一种是全局定义, 比如:

app.use("/routes/*", middleware)

一种是针对单一路由定义使用,比如:

app.post("..", middleware, async (c)=> {
...
})

而且可以提供多个middlewares:

app.post("..", middleware1, middleware2, middleware3,..., async (c)=> {
...
})

基本上就是一个FilterChain的设计思路。

当然,可以直接以inline的形式同时定义middleware和handler:

api.post(
'/posts',
async (c, next) => {
const auth = basicAuth({ username: c.env.USERNAME, password: c.env.PASSWORD })
await auth(c, next)
},
async (c) => {
const post = await c.req.json<Post>()
const ok = createPost({ post })
return c.json({ ok })
}
)

middleware和handler从函数定义上来看有两个关键差别:

  1. 参数: middleware接收context和next handler两个参数,handler只接收context一个参数。
  2. 处理逻辑: middleware必须调用下一个处理器(next handler), handler必须返回响应内容(Response), c.json和c.text等都是helper。
加入「福强私学」

学习和了解更多关于技术、管理与人的精彩内容。

如果已经购买「福强私学」,可以直接点击这里开始访问

©️王福强个人版权所有