כיצד לבצע בקשות HTTP ב-Node.js עם node-fetch

Kyzd Lbz Bqswt Http B Node Js M Node Fetch



בקשות ה-HTTP הן חיוניות והן נועדו להביא מידע מכתובות האתרים ברחבי העולם, כלומר להפעיל אתר אינטרנט וכו'. גישה זו נכנסת לתוקף כאשר יישום אינטרנט צריך ליצור תקשורת עם שרתי האינטרנט כדי לגשת למשאבים. לדוגמה, אחזור או פרסום הנתונים לשרת אינטרנט או API.

ב-JavaScript, ניתן לבצע זאת באמצעות ' window.fetch() ' שיטה. עם זאת, ב' node.js ', ניתן להשיג פונקציונליות זו באמצעות מספר חבילות, כלומר, שליפת צומת וכו'.

בלוג זה מסביר את תחומי התוכן הבאים:







מה זה 'הבאת צומת'?

ה ' אחזור צומת ” מתאים למודול קל משקל שהופך את ה-API לאחזור נגיש ל-node.js. מודול זה גם מאפשר למשתמשים להשתמש ב' לְהָבִיא() 'שיטה ב-node.js שדומה בעיקר ל-JavaScript' window.fetch() ' שיטה.



Syntax(fetch() Method)



לְהָבִיא ( כתובת אתר [ , אפשרויות ] ) ;

בתחביר הזה:





  • ' כתובת אתר ” מתייחס לכתובת ה-URL של המשאב שיש לאחזר/אחזר.
  • ה ' אפשרויות יש צורך בפרמטר 'כאשר יש צורך להשתמש בשיטת 'fetch()' מלבד יצירת ' לקבל ' בקשה.

ערך החזרה

פונקציה זו מאחזרת אובייקט Response הכולל מידע לגבי תגובת HTTP באופן הבא:



  • טֶקסט: מאחזר את גוף התגובה בצורה של מחרוזת.
  • כותרות: מחזירה אובייקט הכולל את מטפלי התגובה.
  • json(): מנתח את גוף התגובה באובייקט JSON.
  • סטטוסטקסט/סטטוס: כולל את המידע לגבי קוד מצב ה-HTTP.
  • בסדר: נותן ' נָכוֹן ' אם הסטטוס הוא קוד סטטוס 2xx.

תנאים מוקדמים לשימוש ב-Node-fetch

להלן התנאים המוקדמים שיש לקחת בחשבון לפני שמתחילים עם ' אחזור צומת ”:

  • מותקן לפחות או האחרונה מגרסה 17.5.
  • ידע בסיסי ב-JavaScript.

כיצד לבצע בקשות HTTP ב-node.js עם node-fetch?

ביצוע בקשות ה-HTTP הוא הליך אסינכרוני מכיוון שקבלת התגובה המבוקשת לוקחת זמן מה. זה כזה שיכולות להיות שתי מתודולוגיות לשימוש בהליכים הא-סינכרוניים. הראשון הוא שהמשתמש יכול לחכות לתגובה ואז להמשיך עם הקוד. השני מבצע את הקוד במקביל.

כיצד להתחיל עם אחזור צמתים?

לפני התחלת או התקנה של ' אחזור צומת מודול, אתחול פרויקט צומת בעזרת הפקודה הנתונה להלן:

npm init - ו

ביצוע פקודה זו יוצר ' package.json ' קובץ בספרייה הנוכחית, באופן הבא:

כעת, התקן את ' אחזור צומת ' מודול באמצעות ה-cmdlet הבא:

צומת התקנה של npm - לְהָבִיא

עם זאת, כדי להתקין גרסת מודול יעד, השתמש בפקודה הבאה:

צומת התקנה של npm - לְהָבִיא@ 2.0

במקרה זה, ' 2.0 תותקן גרסת המודול.

הערה: לפני שתמשיך עם הדוגמאות, צור ' index.mjs ' קובץ בסביבת העבודה שתשמש ליישום הפונקציות.

דוגמה 1: שלח קבל בקשות באמצעות אחזור צומת

ה ' אחזור צומת ניתן להשתמש במודול כדי לקבל טקסט משרת אינטרנט או את הנתונים דרך Rest API.

דוגמת הקוד שלהלן שנכתבה בקובץ שנוצר ' index.mjs ' הקובץ מבצע בקשת קבל פשוטה לדף הבית של YouTube:

יְבוּא לְהָבִיא מ 'הבאת צומת' ;

לְהָבִיא ( 'https://youtube.com' )

. לאחר מכן ( מילואים => מילואים טֶקסט ( ) )

. לאחר מכן ( טֶקסט => לְנַחֵם. עֵץ ( טֶקסט ) ) ;

בשורות הקוד האלה:

  • טען את ' אחזור צומת ” מודול ואחזר את דף הבית של YouTube דרך כתובת האתר שצוינה שאליה מתבצעת בקשת ה-HTTP.
  • לאחר מכן, שרשרת את ' לאחר מכן() 'שיטות לטיפול בתגובה ובנתונים מהבקשה שהוגשה.
  • שיטת 'then()' לשעבר מציינת המתנה לקבל את התגובה משרת YouTube ולהפוך אותה לפורמט טקסט.
  • השיטה האחרונה 'then()' מסמלת את ההמתנה לתוצאה של הטרנספורמציה הקודמת ומציגה אותה בקונסולה.

תְפוּקָה

כעת, הפעל את הקוד באמצעות ה-cmdlet הבא:

אינדקס צומת. mjs

ביצוע הפקודה לעיל מביא לאחזר את כל סימון ה-HTML של דף הבית של YouTube המוצג במסוף:

דוגמה 2: אחזר נתוני JSON מ-Rest API

דוגמה זו משתמשת ' אחזור צומת ' כדי לקבל נתונים מזויפים דרך ה JSONPlaceholder RestAPI. זה כזה ש' לְהָבִיא() השיטה כוללת את כתובת האתר של השרת וממתינה לתגובה:

יְבוּא לְהָבִיא מ 'הבאת צומת' ;

לְהָבִיא ( 'https://jsonplaceholder.typicode.com/users' )

. לאחר מכן ( מילואים => מילואים json ( ) )

. לאחר מכן ( json => {

לְנַחֵם. עֵץ ( 'משתמש מערך ראשון -> ' ) ;

לְנַחֵם. עֵץ ( json [ 0 ] ) ;

לְנַחֵם. עֵץ ( 'שם משתמש של מערך ראשון -> ' ) ;

לְנַחֵם. עֵץ ( json [ 0 ] . שֵׁם ) ;

} )

לפי גוש קוד זה, בצע את השלבים הבאים:

  • גוף ה-HTTPS כולל נתונים בפורמט JSON עם נתוני המשתמש.
  • לאחר מכן, ה' json() הפונקציה ' מופעלת כדי להפעיל את הערכים הבודדים ואת הערכים המתאימים.

תְפוּקָה

החל את ה-cmdlet שצוין להלן כדי להפעיל את הקוד:

אינדקס צומת. mjs

דוגמה 3: פרסום בקשות באמצעות אחזור צומת

ה ' אחזור צומת ניתן להשתמש במודול גם כדי לפרסם את הבקשות במקום לאחזר אותן. ניתן להשיג זאת באמצעות ' לְהָבִיא() שיטה הכוללת פרמטר נוסף לביצוע בקשות POST לשרת.

ישנן מספר אפשרויות שניתן להקצות עם פרמטר זה. עם זאת, במקרה זה, ' שיטה ',' גוּף ' ו' כותרות ' יהיה בשימוש. להלן התיאור של כל אחת מהאפשרויות:

  • ה ' שיטה ' אפשרות מגדירה את סוג בקשות ה-HTTP, כלומר, 'POST' בתרחיש זה.
  • ה ' גוּף ' אפשרות כוללת את גוף הבקשה.
  • ה ' כּוֹתֶרֶת אפשרות ' מכילה את כל הכותרות הנדרשות, כלומר ' סוג תוכן ' בתרחיש הזה.

כעת, עברו ליישום המעשי של שליחת בקשות הפוסט על ידי הוספת פריט חדש למציין המיקום של JSON את כל '. זה נעשה על ידי הוספת פריט חדש לרשימה עם מזהה המשתמש בתור '476':

יְבוּא לְהָבִיא מ 'הבאת צומת' ;

לתת להכל = {

זהות המשתמש : 476 ,

אֲתַר : 'זה Linuxhint' ,

הושלם : שֶׁקֶר

} ;

לְהָבִיא ( 'https://jsonplaceholder.typicode.com/todos' , {

שיטה : 'הודעה' ,

גוּף : JSON. stringify ( את כל ) ,

כותרות : { 'סוג תוכן' : 'application/json' }

} ) . לאחר מכן ( מילואים => מילואים json ( ) )

. לאחר מכן ( json => לְנַחֵם. עֵץ ( json ) ) ;

בקוד הזה:

  • קודם כל, צור אובייקט Todo והמיר אותו ל-JSON תוך צירופו לגוף.
  • כעת, באופן דומה, ציין את כתובת האתר עם האפשרויות הנדרשות בתור ' לְהָבִיא() ' הפרמטרים האופציונליים של השיטה.
  • לאחר מכן, החל את ' JSON.stringify() ' שיטה להפיכת האובייקט למחרוזת מעוצבת (JSON) לפני שליחת/שידורה לשרת האינטרנט.
  • קדימה, יישם את המשולב ' לאחר מכן() ” שיטות לאחזור הנתונים על ידי המתנה לתגובה, הפיכתו ל-JSON וכניסה לקונסולה, בהתאמה.

תְפוּקָה

בצע את הפקודה המפורטת להלן כדי לבצע את הקוד:

אינדקס צומת. mjs

מהם קודי המצב של HTTP?

לפני שתמשיך לדוגמא הבאה, ודא שאם התגובה כוללת ' 3xx 'קוד סטטוס, את הצעדים הנוספים צריך לנקוט על ידי הלקוח. כמו כן, ה' 4xx ' הקודים מייצגים בקשה לא חוקית וה' 5xx קודים תואמים לשגיאות השרת.

הערה: ה ' לתפוס() ' הפונקציה לא יכולה להתמודד עם המקרים שנדונו לעיל מכיוון שתקשורת השרת עוברת בצורה יעילה. לכן, גישה יעילה להבטיח שהבקשות שנכשלו מחזירות את השגיאה היא להגדיר פונקציה המנתחת את מצב ה-HTTP של תגובת השרת.

דוגמה 4: התמודדות עם חריגים ומגבלות

יכולות להיות מספר מגבלות או חריגים בבקשות שנשלחו, כלומר בעיות באינטרנט, ' לְהָבִיא() מגבלות פונקציות וכו'. ניתן לטפל בחריגים אלה על ידי הוספת ה-' לתפוס() ' פונקציה:

פונקציה ניתוח סטטוס ( איקס ) {

אם ( איקס. בסדר ) {

לַחֲזוֹר איקס

} אַחֵר {

לזרוק חָדָשׁ שְׁגִיאָה ( `סטטוס HTTP ביחס לתגובה -> $ { איקס. סטָטוּס } ( $ { איקס. statusText } ) ` ) ;

}

}

לְהָבִיא ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. לאחר מכן ( לנתח סטטוס )

. לאחר מכן ( איקס => איקס. json ( ) )

. לאחר מכן ( json => לְנַחֵם. עֵץ ( json ) )

. לתפוס ( לִטְעוֹת => לְנַחֵם. עֵץ ( לִטְעוֹת ) ) ;

בקטע קוד זה:

  • ראשית, הגדר פונקציה בעלת הפרמטר המוצהר לפני ניתוח התגובה כדי להתמודד עם המגבלות העומדות בפניה.
  • כעת, כלול את ' אחרת ' הצהרות כדי לזרוק את השגיאה או מגבלה מותאמת אישית.
  • לאחר מכן, באופן דומה, החל את ' לְהָבִיא() ' שיטת ושיטות 'then()' המשויכות לאחזור הנתונים על ידי המתנה לתגובה, הפיכתו ל-JSON וכניסה למסוף.
  • לבסוף, ניתן לטפל בחריגים בזמן הריצה על ידי הצבת ' לתפוס() 'שיטה בסוף שרשרת ההבטחה.

תְפוּקָה

לבסוף, הפעל את ה-cmdlet הנתון להלן כדי להפעיל את הקוד ולזרוק את החריגים העומדים בפניהם:

אינדקס צומת. mjs

מקרי שימוש אחרים של 'הבאת צומת'

ה ' אחזור צומת 'יכול לשמש גם להכנת ' בקשות API ' או ' גירוד אינטרנט '. הבה נדון במקרי שימוש אלה בפירוט.

שימוש ב-Node-tch לביצוע בקשות API

ה-API יכול להידרש במספר תרחישים כדי להביא את נתוני היעד דרך מקור אחורי. לבקשות ה-HTTP יכולות להיות שיטות אימות רבות כגון שימוש במפתח API שבו ספק ה-API מספק מפתח המוגבל למשתמש בלבד. גישה נוספת להגנה על ה-API יכולה להיות באמצעות ' אימות בסיסי ' שבו צריך לשלוח כותרת כדי להפעיל את ה-API.

להלן ההדגמה של הגישה האחרונה, כלומר, 'אימות בסיסי' בבקשה לפוסט בעזרת ' לְהָבִיא() ' שיטה:

( אסינכרון ( ) => {

const איקס = ממתין להבאה ( 'http://httpbin.org/post' , {

שיטה : 'הודעה' ,

כותרות : {

'הרשאה' : `$ בסיסי { אחי ( 'סיסמת כניסה' ) } `

} ,

גוּף : JSON. stringify ( {

'מַפְתֵחַ' : 'ערך'

} )

} ) ;

const תוֹצָאָה = מחכה x. טֶקסט ( ) ;

לְנַחֵם. עֵץ ( תוֹצָאָה ) ;

} ) ( ) ;

בהדגמה לעיל, נשלחת כותרת עם ' base64 ' מחרוזת מקודדת של הפורמט ' סיסמת כניסה '.

שימוש ב-node-tch עבור גירוד אינטרנט

' גירוד אינטרנט ” מתייחס לטכניקה שבה הנתונים/התוכן מובאים מהאתרים ומנתחים אותם. ניתוח זה מושג באמצעות ' צ'יריו 'ספרייה.

להלן ההדגמה של שליפת כותרת העמוד באמצעות ' לְהָבִיא() 'שיטה ו' צ'יריו 'ספרייה:

const lib = לִדרוֹשׁ ( 'לְעוֹדֵד' ) ;

( אסינכרון ( ) => {

const איקס = ממתין להבאה ( 'https://linuxhint.com/' ) ;

const ו = מחכה x. טֶקסט ( ) ;

const $ = lib. לִטעוֹן ( ו ) ;

לְנַחֵם. עֵץ ( $ ( 'כותרת' ) . ראשון ( ) . טֶקסט ( ) ) ;

} ) ( ) ;

דוגמה זו מאחזרת את האריח של ' לינוקס 'כותרת האתר.

סיכום

ניתן לבצע את בקשות ה-HTTP ב-node.js עם node-fetch על ידי שליחת בקשות גט, אחזור נתוני JSON מ-REST API או שליחת בקשות פוסט. כמו כן, ניתן לטפל בחריגים ובמגבלות ביעילות באמצעות ' לתפוס() ' פונקציה.