Hono v4.7.0 发布:新增代理助手、国际化中间件和JWK认证中间件
Hono 是一个轻量级的 JavaScript Web 框架,专为现代 Web 开发而设计。它以简洁、高效和灵活著称,特别适合构建 API 和微服务。Hono 支持多种运行时环境,包括多种云服务、Deno、Bun 和 Node.js 等,使其成为跨平台开发的理想选择。
最新发布的 Hono v4.7.0 版本带来了几个重要的新功能和改进,包括代理助手、国际化中间件和 JWK 认证中间件等。这些新特性进一步扩展了 Hono 的功能边界,为开发者提供了更多便利。
代理助手:简化反向代理实现
在 Web 开发中,反向代理是一个常见的需求。Hono v4.7.0 引入了一个全新的代理助手,极大地简化了反向代理的实现过程。
传统上,在使用 Hono 作为反向代理时,开发者需要直接使用 fetch API 来访问后端服务。但这种方式存在一些问题,比如会发送一些不必要的头部信息(如 Accept-Encoding),可能导致后端返回压缩响应,而某些运行时会自动解压缩这些响应,从而导致 Content-Length 不匹配等问题。
新的代理助手解决了这些问题。它不仅能正确处理请求和响应,还能自动处理各种边缘情况。使用起来非常简单:
import { proxy } from 'hono/proxy'
app.get('/proxy/:path', (c) => {
return proxy(`http://${originServer}/${c.req.param('path')}`)
})
对于更复杂的需求,开发者还可以自定义请求头和处理响应:
app.get('/proxy/:path', async (c) => {
const res = await proxy(
`http://${originServer}/${c.req.param('path')}`,
{
headers: {
...c.req.header(),
'X-Forwarded-For': '127.0.0.1',
'X-Forwarded-Host': c.req.header('host'),
Authorization: undefined,
},
}
)
res.headers.delete('Set-Cookie')
return res
})
国际化中间件:轻松实现多语言支持
随着全球化的发展,多语言支持已成为现代 Web 应用的标配。Hono v4.7.0 新增的语言中间件让国际化实现变得轻而易举。
该中间件提供了 languageDetector 功能,可以自动检测用户偏好的语言。它支持多种检测方式:
- 查询参数
- Cookies
- Accept-Language 头部
- URL 路径
使用示例:
import { languageDetector } from 'hono/language'
app.use(
languageDetector({
supportedLanguages: ['en', 'ar', 'ja'], // 支持的语言列表,必须包含回退语言
fallbackLanguage: 'en', // 必填的回退语言
})
)
app.get('/', (c) => {
const lang = c.get('language')
return c.text(`Hello! Your language is ${lang}`)
})
JWK 认证中间件:安全的身份验证方案
安全性是现代 Web 应用的重要考量。Hono v4.7.0 新增的 JWK (JSON Web Key) 认证中间件为开发者提供了一种安全的身份验证方案。
该中间件可以验证 JWK 令牌,并从指定 URL 获取密钥。使用起来非常简单:
import { jwk } from 'hono/jwk'
app.use(
'/auth/*',
jwk({
jwks_uri: `https://${backendServer}/.well-known/jwks.json`,
})
)
app.get('/auth/page', (c) => {
return c.text('You are authorized')
})
标准 Schema 验证器:统一的验证接口
除了上述主要功能外,Hono 生态系统还新增了 Standard Schema 验证器。这是一个统一的验证接口,支持多种流行的验证库,包括 Zod、Valibot 和 ArkType 等。
使用示例展示了其强大的兼容性:
import { sValidator } from '@hono/standard-validator'
import { type } from 'arktype'
import * as v from 'valibot'
import { z } from 'zod'
const aSchema = type({ agent: 'string' })
const vSchema = v.object({ slag: v.string() })
const zSchema = z.object({ name: z.string() })
app.get(
'/:slag',
sValidator('header', aSchema),
sValidator('param', vSchema),
sValidator('query', zSchema),
(c) => {
const headerValue = c.req.valid('header')
const paramValue = c.req.valid('param')
const queryValue = c.req.valid('query')
return c.json({ headerValue, paramValue, queryValue })
}
)
其他改进
除了上述主要功能外,Hono v4.7.0 还包含了一些其他改进:
- 日志记录现在包含查询参数
- 上下文对象新增 buffer 返回支持
- ETag 中间件现在支持自定义哈希方法
- 路由器优化,支持贪婪匹配与后续静态组件的组合
这些改进进一步提升了 Hono 的实用性和灵活性,使其能够更好地满足各种 Web 开发需求。
Hono 框架持续演进,v4.7.0 版本的发布再次证明了其作为现代 JavaScript Web 框架的活力和创新精神。无论是构建简单的 API 还是复杂的 Web 应用,Hono 都提供了强大而灵活的工具集。
- DDeepSeek-V3.1-BaseDeepSeek-V3.1 是一款支持思考模式与非思考模式的混合模型Python00
- QQwen-Image-Edit基于200亿参数Qwen-Image构建,Qwen-Image-Edit实现精准文本渲染与图像编辑,融合语义与外观控制能力Jinja00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~044CommonUtilLibrary
快速开发工具类收集,史上最全的开发工具类,欢迎Follow、Fork、StarJava04GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。06GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!C0300- WWan2.2-S2V-14B【Wan2.2 全新发布|更强画质,更快生成】新一代视频生成模型 Wan2.2,创新采用MoE架构,实现电影级美学与复杂运动控制,支持720P高清文本/图像生成视频,消费级显卡即可流畅运行,性能达业界领先水平Python00
- GGLM-4.5-AirGLM-4.5 系列模型是专为智能体设计的基础模型。GLM-4.5拥有 3550 亿总参数量,其中 320 亿活跃参数;GLM-4.5-Air采用更紧凑的设计,拥有 1060 亿总参数量,其中 120 亿活跃参数。GLM-4.5模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求Jinja00
Yi-Coder
Yi Coder 编程模型,小而强大的编程助手HTML013
热门内容推荐
最新内容推荐
项目优选









