วิธีสร้างคำขอ HTTP ใน Node.js ด้วยการดึงโหนด

Withi Srang Khakhx Http Ni Node Js Dwy Kar Dung Hond



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

ใน JavaScript สามารถทำได้ผ่านทาง “ หน้าต่าง.ดึงข้อมูล() ' วิธี. อย่างไรก็ตาม ใน “ node.js ” ฟังก์ชั่นนี้สามารถทำได้โดยใช้หลายแพ็คเกจ เช่น การดึงโหนด ฯลฯ

บล็อกนี้อธิบายเนื้อหาในส่วนต่อไปนี้:







“การดึงโหนด” คืออะไร?

โหนดดึงข้อมูล ” สอดคล้องกับโมดูลน้ำหนักเบาที่ทำให้ node.js การดึงข้อมูล API เข้าถึงได้ โมดูลนี้ยังช่วยให้ผู้ใช้สามารถใช้ ' ดึงข้อมูล() ” วิธีการใน node.js ซึ่งส่วนใหญ่จะคล้ายกับ JavaScript “ หน้าต่าง.ดึงข้อมูล() ' วิธี.



ไวยากรณ์ (ดึงข้อมูล () วิธีการ)



ดึง ( URL [ , ตัวเลือก ] ) ;

ในรูปแบบนี้:





  • URL ” หมายถึง URL ของทรัพยากรที่ต้องการดึงข้อมูล/ดึงข้อมูล
  • ตัวเลือก ” จำเป็นต้องใช้พารามิเตอร์เมื่อจำเป็นต้องใช้เมธอด “fetch()” นอกเหนือจากการสร้าง “ รับ ' ขอ.

ค่าส่งคืน

ฟังก์ชันนี้ดึงวัตถุการตอบสนองที่ประกอบด้วยข้อมูลเกี่ยวกับการตอบสนอง HTTP ดังนี้:



  • ข้อความ: ดึงเนื้อหาการตอบสนองในรูปแบบของสตริง
  • ส่วนหัว: ส่งกลับวัตถุที่ประกอบด้วยตัวจัดการการตอบสนอง
  • เจสัน(): แยกวิเคราะห์เนื้อหาการตอบสนองในออบเจ็กต์ JSON
  • ข้อความสถานะ/สถานะ: ประกอบด้วยข้อมูลเกี่ยวกับรหัสสถานะ HTTP
  • ตกลง: ให้” จริง ” หากสถานะเป็นรหัสสถานะ 2xx

ข้อกำหนดเบื้องต้นสำหรับการใช้การดึงโหนด

ต่อไปนี้เป็นข้อกำหนดเบื้องต้นที่ต้องพิจารณาก่อนเริ่มต้นด้วย “ โหนดดึงข้อมูล ”:

  • ติดตั้งอย่างน้อยหรือล่าสุดกว่าเวอร์ชัน 17.5
  • ความรู้พื้นฐานของจาวาสคริปต์

วิธีสร้างคำขอ HTTP ใน node.js ด้วย node-fetch

การสร้างคำขอ HTTP เป็นขั้นตอนแบบอะซิงโครนัสเนื่องจากการได้รับการตอบสนองที่ร้องขอต้องใช้เวลาระยะหนึ่ง ดังนั้นจึงมีวิธีการสองวิธีในการใช้ขั้นตอนแบบอะซิงโครนัส ประการแรกคือผู้ใช้สามารถรอการตอบกลับแล้วจึงดำเนินการต่อด้วยโค้ด อีกอันกำลังรันโค้ดแบบขนาน

จะเริ่มต้นการดึงโหนดได้อย่างไร

ก่อนที่จะเริ่มหรือติดตั้ง “ โหนดดึงข้อมูล ” โมดูลเริ่มต้นโปรเจ็กต์โหนดด้วยความช่วยเหลือของคำสั่งที่ระบุด้านล่าง:

เวลาเริ่มต้น npm - - และ

การดำเนินการคำสั่งนี้จะสร้าง “ แพ็คเกจ.json ” ในไดเร็กทอรีปัจจุบันดังต่อไปนี้:

ตอนนี้ให้ติดตั้ง “ โหนดดึงข้อมูล ” โมดูลโดยใช้ cmdlet ต่อไปนี้:

โหนดการติดตั้ง npm - - ดึง

อย่างไรก็ตาม หากต้องการติดตั้งเวอร์ชันโมดูลเป้าหมาย ให้ใช้คำสั่งต่อไปนี้:

โหนดการติดตั้ง npm - - ดึง@ 2.0

ในกรณีนี้ “ 2.0 ” เวอร์ชันของโมดูลจะถูกติดตั้ง

บันทึก: ก่อนที่จะดำเนินการตามตัวอย่าง ให้สร้าง ' ดัชนี.mjs ” ในพื้นที่ทำงานที่จะใช้ในการใช้งานฟังก์ชันต่างๆ

ตัวอย่างที่ 1: ส่งคำขอรับผ่านการดึงข้อมูลโหนด

โหนดดึงข้อมูล ” สามารถใช้โมดูลเพื่อรับข้อความจากเว็บเซิร์ฟเวอร์หรือข้อมูลผ่าน Rest API

ตัวอย่างโค้ดด้านล่างเขียนด้วยการสร้าง “ ดัชนี.mjs ” สร้างคำขอรับแบบง่ายๆ ไปยังหน้าแรกของ YouTube:

นำเข้า ดึง จาก 'การดึงโหนด' ;

ดึง ( 'https://youtube.com' )

. แล้ว ( ความละเอียด => ความละเอียด ข้อความ ( ) )

. แล้ว ( ข้อความ => คอนโซล บันทึก ( ข้อความ ) ) ;

ในบรรทัดโค้ดเหล่านี้:

  • โหลด “ โหนดดึงข้อมูล ” และเรียกข้อมูลหน้าแรกของ YouTube ผ่าน URL ที่ระบุซึ่งมีการร้องขอ HTTP
  • หลังจากนั้นให้โซ่ “ แล้ว() ” วิธีการจัดการการตอบสนองและข้อมูลจากคำขอที่ทำ
  • วิธี 'then()' แบบเดิมหมายถึงกำลังรอรับการตอบกลับจากเซิร์ฟเวอร์ YouTube และแปลงเป็นรูปแบบข้อความ
  • วิธีหลัง “แล้ว()” หมายถึงการรอผลลัพธ์ของการแปลงครั้งก่อนและแสดงไว้บนคอนโซล

เอาท์พุต

ตอนนี้รันโค้ดผ่าน cmdlet ต่อไปนี้:

ดัชนีโหนด มจส

การดำเนินการคำสั่งข้างต้นส่งผลให้ได้รับมาร์กอัป HTML ทั้งหมดของหน้าแรกของ YouTube ที่แสดงบนคอนโซล:

ตัวอย่างที่ 2: ดึงข้อมูล JSON จาก Rest API

ตัวอย่างนี้ใช้ “ โหนดดึงข้อมูล ” เพื่อรับข้อมูลปลอมผ่านทาง JSONPlaceholder RestAPI เป็นเช่นนั้นเอง” ดึงข้อมูล() ” วิธีการประกอบด้วย URL ของเซิร์ฟเวอร์และรอการตอบกลับ:

นำเข้า ดึง จาก 'การดึงโหนด' ;

ดึง ( 'https://jsonplaceholder.typicode.com/users' )

. แล้ว ( ความละเอียด => ความละเอียด json.json ( ) )

. แล้ว ( json.json => {

คอนโซล บันทึก ( 'ผู้ใช้อาร์เรย์คนแรก ->' ) ;

คอนโซล บันทึก ( json.json [ 0 ] ) ;

คอนโซล บันทึก ( 'ชื่อผู้ใช้อาร์เรย์แรก ->' ) ;

คอนโซล บันทึก ( json.json [ 0 ] . ชื่อ ) ;

} )

ตามบล็อคโค้ดนี้ ให้ทำตามขั้นตอนต่อไปนี้:

  • เนื้อความ HTTPS ประกอบด้วยข้อมูลที่จัดรูปแบบ JSON ซึ่งมีข้อมูลของผู้ใช้
  • หลังจากนั้น “ เจสัน() ” ถูกใช้เพื่อเรียกใช้แต่ละรายการและค่าที่เกี่ยวข้อง

เอาท์พุต

ใช้ cmdlet ที่ระบุด้านล่างเพื่อรันโค้ด:

ดัชนีโหนด มจส

ตัวอย่างที่ 3: โพสต์คำขอผ่านการดึงโหนด

โหนดดึงข้อมูล ” โมดูลยังสามารถใช้เพื่อโพสต์คำขอแทนที่จะดึงข้อมูลเหล่านั้น ซึ่งสามารถทำได้ผ่านทาง “ ดึงข้อมูล() ” วิธีการที่มีพารามิเตอร์เพิ่มเติมเพื่อส่งคำขอ POST ไปยังเซิร์ฟเวอร์

มีหลายตัวเลือกที่สามารถจัดสรรด้วยพารามิเตอร์นี้ได้ อย่างไรก็ตาม ในกรณีนี้ “ วิธี , ' ร่างกาย ' และ ' ส่วนหัว ' จะถูกนำไปใช้. ต่อไปนี้เป็นคำอธิบายของแต่ละตัวเลือก:

  • วิธี ตัวเลือก ” กำหนดประเภทของคำขอ HTTP เช่น “POST” ในสถานการณ์นี้
  • ร่างกาย ” ตัวเลือกประกอบด้วยเนื้อหาของคำขอ
  • หัวข้อ ” ตัวเลือกประกอบด้วยส่วนหัวที่จำเป็นทั้งหมด เช่น “ ชนิดของเนื้อหา ” ในสถานการณ์นี้

ตอนนี้ ไปสู่การใช้งานจริงของการส่งคำขอโพสต์โดยการผนวกรายการใหม่เข้ากับตัวยึดตำแหน่ง JSON “ ทั้งหมด '. ทำได้โดยการต่อท้ายรายการใหม่ในรายการที่มี userID เป็น '476':

นำเข้า ดึง จาก 'การดึงโหนด' ;

ปล่อยให้ทุกอย่าง = {

รหัสผู้ใช้ : : 476 ,

เว็บไซต์ : : “นี่คือลินุกซ์ชินท์” ,

สมบูรณ์ : : เท็จ

} ;

ดึง ( 'https://jsonplaceholder.typicode.com/todos' , {

วิธี : : 'โพสต์' ,

ร่างกาย : : เจสัน เข้มงวด ( ทั้งหมด ) ,

ส่วนหัว : : { 'ชนิดของเนื้อหา' : : 'แอปพลิเคชัน / json' }

} ) . แล้ว ( ความละเอียด => ความละเอียด json.json ( ) )

. แล้ว ( json.json => คอนโซล บันทึก ( json.json ) ) ;

ในรหัสนี้:

  • ก่อนอื่น ให้สร้างออบเจ็กต์สิ่งที่ต้องทำและแปลงเป็น JSON ในขณะที่ผนวกเข้ากับเนื้อหา
  • ในทำนองเดียวกัน ให้ระบุ URL ด้วยตัวเลือกที่จำเป็นเป็น “ ดึงข้อมูล() ” พารามิเตอร์ทางเลือกของวิธีการ
  • หลังจากนั้นให้สมัคร “ JSON.stringify() ” เพื่อแปลงวัตถุให้เป็นสตริงที่จัดรูปแบบ (JSON) ก่อนที่จะส่ง/ส่งไปยังเว็บเซิร์ฟเวอร์
  • เดินหน้าดำเนินการผสมผสาน” แล้ว() ” เพื่อดึงข้อมูลโดยรอการตอบกลับ แปลงเป็น JSON และบันทึกลงในคอนโซล ตามลำดับ

เอาท์พุต

ดำเนินการคำสั่งที่ให้มาด้านล่างเพื่อรันโค้ด:

ดัชนีโหนด มจส

รหัสสถานะ HTTP คืออะไร

ก่อนที่จะดำเนินการตัวอย่างถัดไป ตรวจสอบให้แน่ใจว่าหากคำตอบประกอบด้วย “ 3xx รหัสสถานะ ลูกค้าจะต้องดำเนินการตามขั้นตอนเพิ่มเติม ในทำนองเดียวกัน “ 4xx ” รหัสแสดงถึงคำขอที่ไม่ถูกต้องและ “ 5xx ” รหัสสอดคล้องกับข้อผิดพลาดของเซิร์ฟเวอร์

บันทึก: จับ() ” ฟังก์ชั่นไม่สามารถรับมือกับกรณีที่กล่าวถึงข้างต้นได้เนื่องจากการสื่อสารของเซิร์ฟเวอร์ดำเนินไปในลักษณะที่คล่องตัว ดังนั้นแนวทางที่มีประสิทธิภาพเพื่อให้แน่ใจว่าคำขอที่ล้มเหลวส่งกลับข้อผิดพลาดคือการกำหนดฟังก์ชันที่วิเคราะห์สถานะ HTTP ของการตอบสนองของเซิร์ฟเวอร์

ตัวอย่างที่ 4: การจัดการกับข้อยกเว้นและข้อจำกัด

คำขอที่ส่งอาจมีข้อจำกัดหรือข้อยกเว้นหลายประการ เช่น ปัญหาเกี่ยวกับอินเทอร์เน็ต “ ดึงข้อมูล() ” ข้อจำกัดของฟังก์ชัน ฯลฯ ข้อยกเว้นเหล่านี้สามารถจัดการได้โดยการต่อท้าย “ จับ() ' การทำงาน:

ฟังก์ชั่น analyseStatus ( x ) {

ถ้า ( x. ตกลง ) {

กลับ x

} อื่น {

โยน ใหม่ ข้อผิดพลาด ( `สถานะ HTTP ที่เกี่ยวข้องกับการตอบสนอง -> $ { x. สถานะ } ( $ { x. ข้อความสถานะ } ) ` ) ;

}

}

ดึง ( 'https://jsonplaceholder.typicode.com/MissingResource' )

. แล้ว ( วิเคราะห์สถานะ )

. แล้ว ( x => x. json.json ( ) )

. แล้ว ( json.json => คอนโซล บันทึก ( json.json ) )

. จับ ( ผิดพลาด => คอนโซล บันทึก ( ผิดพลาด ) ) ;

ในข้อมูลโค้ดนี้:

  • ขั้นแรก กำหนดฟังก์ชันที่มีพารามิเตอร์ที่ระบุไว้ก่อนที่จะแยกวิเคราะห์การตอบสนองเพื่อรับมือกับข้อจำกัดที่ต้องเผชิญ
  • ตอนนี้ให้รวม ' ถ้า/อื่น ” เพื่อโยนข้อผิดพลาดที่เผชิญหรือข้อจำกัดที่กำหนดเอง
  • หลังจากนั้นในทำนองเดียวกันให้ใช้ ' ดึงข้อมูล() ” และวิธีการ “แล้ว()” ที่เกี่ยวข้องเพื่อดึงข้อมูลโดยรอการตอบกลับ แปลงเป็น JSON และเข้าสู่ระบบคอนโซล
  • สุดท้ายนี้ ข้อยกเว้นรันไทม์สามารถจัดการได้โดยการวาง ' จับ() ” วิธีการอยู่ที่ส่วนท้ายของห่วงโซ่คำมั่นสัญญา

เอาท์พุต

สุดท้ายให้เรียกใช้ cmdlet ที่ระบุด้านล่างเพื่อเรียกใช้โค้ดและโยนข้อยกเว้นที่ต้องเผชิญ:

ดัชนีโหนด มจส

กรณีการใช้งานอื่นๆ ของ “การดึงโหนด”

โหนดดึงข้อมูล ”ก็สามารถนำมาใช้ทำ” คำขอ API ' หรือ ' การขูดเว็บ '. มาหารือเกี่ยวกับกรณีการใช้งานเหล่านี้โดยละเอียด

การใช้การดึงโหนดเพื่อสร้างคำขอ API

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

ต่อไปนี้เป็นการสาธิตแนวทางหลัง เช่น 'การรับรองความถูกต้องขั้นพื้นฐาน' ในคำขอหลังได้รับความช่วยเหลือจาก ' ดึงข้อมูล() ' วิธี:

( อะซิงโครนัส ( ) => {

ค่าคงที่ x = รอรับ ( 'http://httpbin.org/post' , {

วิธี : : 'โพสต์' ,

ส่วนหัว : : {

“การอนุญาต” : : `พื้นฐาน $ { พี่ชาย ( 'รหัสผ่านการเข้าใช้งาน' ) } `

} ,

ร่างกาย : : เจสัน เข้มงวด ( {

'สำคัญ' : : 'ค่า'

} )

} ) ;

ค่าคงที่ ผลลัพธ์ = รอ x ข้อความ ( ) ;

คอนโซล บันทึก ( ผลลัพธ์ ) ;

} ) ( ) ;

ในการสาธิตข้างต้น ส่วนหัวจะถูกส่งไปพร้อมกับ “ ฐาน64 ” สตริงที่เข้ารหัสของรูปแบบ “ รหัสผ่านการเข้าใช้งาน '.

การใช้การดึงโหนดสำหรับ Web Scraping

การขูดเว็บ ” หมายถึงเทคนิคในการดึงข้อมูล/เนื้อหาจากไซต์และแยกวิเคราะห์ การแยกวิเคราะห์นี้สามารถทำได้ผ่านทาง “ ไชโย ' ห้องสมุด.

ด้านล่างนี้เป็นการสาธิตการดึงชื่อเพจผ่านปุ่ม “ ดึงข้อมูล() ” วิธีการ และ “ ไชโย ' ห้องสมุด:

ค่าคงที่ lib = จำเป็นต้อง ( 'เชียร์' ) ;

( อะซิงโครนัส ( ) => {

ค่าคงที่ x = รอรับ ( 'https://linuxhint.com/' ) ;

ค่าคงที่ และ = รอ x ข้อความ ( ) ;

ค่าคงที่ $ = lib. โหลด ( และ ) ;

คอนโซล บันทึก ( $ ( 'ชื่อ' ) . อันดับแรก ( ) . ข้อความ ( ) ) ;

} ) ( ) ;

ตัวอย่างนี้จะดึงข้อมูลไทล์ของ ' ลินุกซ์ ” ชื่อไซต์

บทสรุป

คำขอ HTTP ใน node.js สามารถสร้างได้โดยใช้ node-fetch โดยการส่งคำขอ get การดึงข้อมูล JSON จาก REST API หรือการส่งคำขอโพสต์ นอกจากนี้ ข้อยกเว้นและข้อจำกัดสามารถจัดการได้อย่างมีประสิทธิภาพผ่านทาง “ จับ() ' การทำงาน.