ホームページ >ウェブフロントエンド >jsチュートリアル >@rxliuli/vista の紹介: ミドルウェアをサポートする、Fetch と XHR の両方のための統合リクエスト インターセプター ライブラリ。

@rxliuli/vista の紹介: ミドルウェアをサポートする、Fetch と XHR の両方のための統合リクエスト インターセプター ライブラリ。

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-07 00:19:40676ブラウズ

Introduction to @rxliuli/vista: A unified request interceptor library for both Fetch and XHR with middleware support.
Introduction to @rxliuli/vista: A unified request interceptor library for both Fetch and XHR with middleware support.

@rxliuli/vista は、Fetch/XHR リクエストの統合インターセプトをサポートする強力な同種リクエスト インターセプター ライブラリです。これにより、リクエストのライフサイクルのさまざまな段階に介入でき、リクエストの監視、変更、モック化などのさまざまな機能が有効になります。

特徴

  • ?フェッチと 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(ミドルウェア): ミドルウェアを追加
  • intercept(): リクエストのインターセプトを開始します
  • destroy(): リクエストのインターセプトを停止します

ミドルウェアコンテキスト

ミドルウェア関数は 2 つのパラメーターを受け取ります:

  • context: リクエストとレスポンスの情報が含まれます
    • req: リクエストオブジェクト res: 応答オブジェクト
    • type: リクエストタイプ、fetch または xhr
  • next: 次のミドルウェアまたは元のリクエストの関数を呼び出します

よくある質問

  1. 傍受を停止するにはどうすればよいですか?
   const vista = new Vista()
   vista.intercept()
   // When not needed
   vista.destroy()
  1. 非同期操作をサポートしていますか?
    はい、ミドルウェアは async/await 構文をサポートしています。

  2. Node.js でのリクエストのインターセプトはサポートされていますか?

いいえ、ブラウザでのリクエストのインターセプトのみをサポートします。

ありがとう

  • xhook: xhr インターセプトを実装するライブラリ。一部の機能の実装に役立ちます。
  • hono: API で多くのインスピレーションを提供する優れた Web サーバー フレームワーク。

貢献ガイドライン

問題やプルリクエストの送信を歓迎します!

ライセンス

MIT ライセンス

試してみて、その経験を教えてください。エラーや機能に関するフィードバックがあれば歓迎します。

以上が@rxliuli/vista の紹介: ミドルウェアをサポートする、Fetch と XHR の両方のための統合リクエスト インターセプター ライブラリ。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。