你要把一次请求想成一份从边境送来的急件。
它经过 Hono 的过程大致是这样:
Request
│
▼
app.fetch
│
▼
Router 找到对应驿道
│
▼
Middleware 1 开始
│
▼
Middleware 2 开始
│
▼
Validator / Handler
│
▼
Middleware 2 收尾
│
▼
Middleware 1 收尾
│
▼
Response这就是典型的“洋葱模型”执行顺序。
再看一个概念关系图:
Hono App
│
├── Router
│ ├── method
│ ├── path
│ └── sub-app route()
│
├── Context (c)
│ ├── c.req
│ ├── c.env
│ ├── c.var / c.set / c.get
│ ├── c.status()
│ ├── c.text()
│ ├── c.json()
│ ├── c.html()
│ └── c.render()
│
├── Middleware
│ ├── logger
│ ├── cors
│ ├── auth
│ ├── secureHeaders
│ └── custom middleware
│
└── Response#Context 是什么
c 不是一个神秘对象,它就是当前这次值班的执勤板。
你会最常用这些能力:
app.get('/report', (c) => {
const ua = c.req.header('User-Agent')
c.status(200)
return c.json({ ok: true, ua })
})最常用的心智是:
c.req:收到的文书c.env:这个驻地能调用的物资与绑定c.set / c.get / c.var:在这次执勤过程中临时挂在板子上的数据c.text / c.json / c.html:最终回信方式