מתודות התצורה של HttpClient ב-Reactor Netty מחזירות הפניה ללקוח מוגדר. אם תזרקו את התוצאה הזו, ההפניה הקודמת נשארת עם ההגדרות הקודמות שלה.

הקוד הזה יוצר תצורת proxy ואז מאבד אותה:

HttpClient client = HttpClient.create();
client.proxy(spec -> spec.type(ProxyProvider.Proxy.HTTP)
    .host("proxy.example").port(8080));

במקום זאת, שמרו את ההפניה המוחזרת:

client = client.proxy(spec -> spec.type(ProxyProvider.Proxy.HTTP)
    .host("proxy.example").port(8080));

WebClient webClient = WebClient.builder()
    .clientConnector(new ReactorClientHttpConnector(client))
    .build();

הטיפוסים הם HttpClient ו-ProxyProvider של Reactor Netty, וכן WebClient ו-ReactorClientHttpConnector של Spring. שרשור מתודות ישירות מ-HttpClient.create() הוא דרך נוספת לשמור את התצורה המוחזרת. עבור בקשות מותרות ל-API הציבורי, רשימת proxys ה-HTTP מספקת מועמדים עבור המארח והפורט בדוגמה.

אותה בדיקה חלה גם בעת הגדרת פסקי זמן לתגובה או טיפול בהפניות מחדש. קראו את חוזה ההחזרה של המתודה במקום להניח ש-setter משנה את האובייקט המקורי.

עקבו גם אחרי איזו הפניה מגיעה ל-connector. הקצאה מחדש של משתנה מקומי לאחר יצירת connector אינה מחליפה את הלקוח שה-connector כבר קיבל.

מאמרים קשורים