@rxliuli/vista 简介:一个用于 Fetch 和 XHR 的统一请求拦截器库,具有中间件支持。
@rxliuli/vista是一个强大的同构请求拦截器库,支持Fetch/XHR请求的统一拦截。它允许您在请求生命周期的不同阶段进行干预,实现请求监控、修改和模拟等各种功能。
特征
- ?同时支持Fetch和XHR请求拦截
- ?使用中间件模式,灵活且易于扩展
- ?在请求之前和之后支持干预
- ?可修改的请求和响应数据
- ?零依赖,体积紧凑
- ?仅支持浏览器环境
安装
npm install @rxliuli/vista # Or yarn add @rxliuli/vista # Or pnpm add @rxliuli/vista
基本用法
import { Vista } from '@rxliuli/vista' new Vista() .use(async (c, next) => { console.log('Request started:', c.req.url) await next() }) .use(async (c, next) => { await next() console.log('Response data:', await c.res.clone().text()) }) .intercept()
高级用例
添加全局请求头
new Vista() .use(async (c, next) => { c.req.headers.set('Authorization', 'Bearer token') await next() }) .intercept()
请求结果缓存
const cache = new Map() new Vista() .use(async (c, next) => { const key = c.req.url if (cache.has(key)) { c.res = cache.get(key).clone() return } await next() cache.set(key, c.res.clone()) }) .intercept()
请求失败,请重试
new Vista() .use(async (c, next) => { const maxRetries = 3 let retries = 0 while (retries < maxRetries) { try { await next() break } catch (err) { retries++ if (retries === maxRetries) throw err } } }) .intercept()
动态修改响应
new Vista() .use(async (c, next) => { await next() if (c.req.url === 'https://example.com/example') { const json = await c.res.json() json.id = 2 c.res = new Response(JSON.stringify(json), c.res) } }) .intercept()
API参考
远景级
主拦截器类,提供以下方法:
- use(middleware): 添加中间件
- Intercept():开始拦截请求
- destroy():停止拦截请求
中间件上下文
中间件函数接收两个参数:
-
context:包含请求和响应信息
- req:请求对象 res:响应对象
- type:请求类型,fetch或xhr
- next:调用下一个中间件或原始请求的函数
常问问题
- 如何停止拦截?
const vista = new Vista() vista.intercept() // When not needed vista.destroy()
是否支持异步操作?
是的,中间件支持 async/await 语法。Node.js 中是否支持拦截请求?
不可以,仅支持在浏览器中拦截请求。
谢谢
- xhook:一个实现xhr拦截的库,有助于一些功能的实现。
- hono:一个优秀的Web服务器框架,它的API提供了很多灵感。
贡献指南
欢迎提交问题和拉取请求!
执照
麻省理工学院许可证
尝试一下并告诉我您的体验,欢迎任何错误或功能反馈。
以上是@rxliuli/vista 简介:一个用于 Fetch 和 XHR 的统一请求拦截器库,具有中间件支持。的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

实现视差滚动和元素动画效果的探讨本文将探讨如何实现类似资生堂官网(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

学习JavaScript不难,但有挑战。1)理解基础概念如变量、数据类型、函数等。2)掌握异步编程,通过事件循环实现。3)使用DOM操作和Promise处理异步请求。4)避免常见错误,使用调试技巧。5)优化性能,遵循最佳实践。

如何在JavaScript中将具有相同ID的数组元素合并到一个对象中?在处理数据时,我们常常会遇到需要将具有相同ID�...

zustand异步操作中的数据更新问题在使用zustand状态管理库时,经常会遇到异步操作导致数据更新不及时的问题。�...
