import { createClient } from 'contentful';
import { HttpsProxyAgent } from 'https-proxy-agent';

const agent = new HttpsProxyAgent('http://proxy.example:8080');
const client = createClient({
  space: spaceId,
  accessToken,
  adapter: 'http',
  httpsAgent: agent,
  proxy: false,
});

Delivery API の操作には既存の spaceId/accessToken とこのクライアントを使います。依存関係はすでに揃っているものとします。公的な仲介者を経由する許可済みの公開 Delivery API リクエストでは、HTTP プロキシ一覧がエージェントの HTTP プロキシ URL の候補を提供します。

既定の API は HTTPS を使うため httpsAgent が選ばれます。そのエージェントは HTTP プロキシのリスナーに到達して CONNECT を確立できます。proxy:false は Axios が別のプロキシ選択を追加するのを防ぎます。

明示的な Node http アダプターが重要です。ブラウザーのネットワークや他のアダプターは、これらのフィールドから Node ソケットの経路を得られません。クライアントの処理中はエージェントを保持し、終了時にリクエストが完了したら解放してください。

関連記事