URL แรกอาจเป็น HTTPS และ URL ที่เปลี่ยนเส้นทางอาจเป็น HTTP เลือกเอเจนต์ตามปลายทางของแต่ละคำขอ แทนที่จะผูกเอเจนต์ตัวเดียวกับ URL แรก

สำหรับแพ็กเกจ node-fetch ที่นำเข้าในแอปพลิเคชัน ESM ให้ส่งฟังก์ชัน:

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,
});

แทนที่ URL ของ API และปลายทางของพร็อกซี สำหรับ API สาธารณะที่อนุญาตผ่านตัวกลางสาธารณะ รายการพร็อกซี HTTP มีผู้สมัครสำหรับ proxyUrl เอเจนต์ทั้งสองใช้ตัวรับฟังพร็อกซี HTTP ตัวเดียวกันได้ ชื่อของทั้งสองหมายถึงคำขอไปยังปลายทาง

URL ที่ส่งให้ตัวเลือกเอเจนต์ที่ถูกเลือก
https://…httpsAgent
http://…httpAgent

ดังนั้นฟังก์ชันยังเลือกเอเจนต์ที่ตรงกันหากการเปลี่ยนเส้นทางเปลี่ยนโปรโตคอลของปลายทาง proxyUrl ยังคงอธิบายตัวกลาง โดยไม่ขึ้นกับการตัดสินใจนั้น

สร้างเอเจนต์ทั้งสองครั้งเดียวสำหรับภาระงานแล้วใช้ซ้ำ จัดการสถานะที่ส่งคืนและอ่านเนื้อหาการตอบกลับในโค้ดที่เรียก อินเทอร์เฟซเอเจนต์นี้เป็นของ node-fetch ส่วน fetch ที่มีมาใน Node ใช้อินเทอร์เฟซการขนส่งอื่น

บทความที่เกี่ยวข้อง