全书目录

第三十四篇:Hono 完全指南 —— 边缘轻骑哨站宇宙

第四站:请求穿过哨站时,到底发生了什么

1 分钟 233 字 第 640 / 962 个阅读单元

你要把一次请求想成一份从边境送来的急件。

它经过 Hono 的过程大致是这样:

text
Request
  │
  ▼
app.fetch
  │
  ▼
Router 找到对应驿道
  │
  ▼
Middleware 1 开始
  │
  ▼
Middleware 2 开始
  │
  ▼
Validator / Handler
  │
  ▼
Middleware 2 收尾
  │
  ▼
Middleware 1 收尾
  │
  ▼
Response

这就是典型的“洋葱模型”执行顺序。

再看一个概念关系图:

text
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 不是一个神秘对象,它就是当前这次值班的执勤板

你会最常用这些能力:

ts
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:最终回信方式