ให้ node-fetch เลือกเอเจนต์พร็อกซีหลังการเปลี่ยนเส้นทาง
ใช้ฟังก์ชันเอเจนต์สำหรับปลายทาง HTTP และ HTTPS เพื่อให้การเปลี่ยนเส้นทางเลือกเอเจนต์พร็อกซีที่เหมาะสมได้
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 ใช้อินเทอร์เฟซการขนส่งอื่น