URL pertama bisa HTTPS dan URL hasil pengalihan HTTP. Pilih agen sesuai tujuan setiap permintaan, bukan mengikat satu agen ke URL pertama.

Untuk paket node-fetch yang diimpor dalam aplikasi ESM, sediakan sebuah fungsi:

import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';

const proxyUrl = 'http://proxy.example:8080';
const httpAgent = new HttpProxyAgent(proxyUrl);
const httpsAgent = new HttpsProxyAgent(proxyUrl);

const response = await fetch('https://api.example/', {
  agent: url => url.protocol === 'http:' ? httpAgent : httpsAgent,
});

Ganti URL API dan titik akhir proxy. Untuk API publik yang diizinkan melalui perantara publik, daftar proxy HTTP menyediakan kandidat untuk proxyUrl. Kedua agen dapat memakai listener proxy HTTP yang sama; namanya merujuk pada permintaan ke tujuan.

URL yang diteruskan ke pemilihAgen yang dipilih
https://…httpsAgent
http://…httpAgent

Jadi fungsi tetap memilih agen yang cocok jika pengalihan mengubah protokol tujuan. proxyUrl tetap menjelaskan perantara, terlepas dari keputusan itu.

Buat agen sekali untuk beban kerja dan pakai ulang. Tangani status yang dikembalikan dan baca badan respons di kode pemanggil. Antarmuka agen ini milik node-fetch; fetch bawaan Node memakai antarmuka transport yang berbeda.

Artikel terkait