คู่มือนี้จะอธิบายขั้นตอนการสร้างคำขอ HTTP ด้วยโมดูลคำขอ Node.js โดยครอบคลุมหัวข้อด้านล่าง:
จะสร้างคำขอ HTTP ด้วยโมดูลคำขอ Node.js ได้อย่างไร
ทางเลือกอื่นของโมดูลคำขอ Node.js
- วิธีที่ 1: การร้องขอ HTTP โดยใช้โมดูล HTTP เริ่มต้น
- วิธีที่ 2: การสร้างคำขอ HTTP โดยใช้โมดูล Axios ภายนอก
จะสร้างคำขอ HTTP โดยใช้โมดูลคำขอ Node.js ได้อย่างไร
“ ขอ ” module เป็นโมดูลที่ตรงไปตรงมาที่สุดที่ช่วยในการส่งหรือรับคำขอ HTTP โมดูลนี้เรียบง่ายเกินไปและเข้าใจง่าย แต่ให้อิสระแก่นักพัฒนาน้อยมาก นอกจากนี้ นักพัฒนาไม่สามารถปรับเปลี่ยนฟังก์ชันการทำงานพื้นฐานหรือปรับปรุงคุณลักษณะที่มีให้ได้อย่างง่ายดาย
บันทึก: แม้ว่า ' ขอ ” เป็นโมดูลที่ดี อย่างไรก็ตาม ผู้สร้างได้ตัดสินใจที่จะหยุดทำงานในโมดูลนี้ และโมดูลนี้จะเลิกใช้งานโดยสมบูรณ์ในวันที่ 11 กุมภาพันธ์ 2020
อย่างไรก็ตามหากคุณยังต้องการทราบแนวคิดในการดำเนินการตามนี้” ขอ ” จากนั้นไปที่ขั้นตอนที่กล่าวถึงด้านล่าง
ขั้นตอนที่ 1: การติดตั้งโมดูล “คำขอ” และการเริ่มต้นโครงการ Node.js
เริ่มต้นด้วยการเริ่มต้น ' เวลา 22.00 น ” แพ็คเกจภายในไดเร็กทอรีที่ต้องการเพื่อสร้างโปรเจ็กต์ Node.js โดยการรันคำสั่ง:
เวลาเริ่มต้น npm - - และผลลัพธ์แสดงว่า 'npm' ได้รับการเริ่มต้นเรียบร้อยแล้วในไดเร็กทอรีที่ให้มา:
จากนั้นทำการติดตั้งที่จำเป็น “ ขอ ” โมดูลโดยดำเนินการคำสั่ง:
คำขอติดตั้ง npmผลลัพธ์แสดงว่าการติดตั้งเสร็จสมบูรณ์แล้ว แต่เนื่องจากโมดูลนี้เลิกใช้แล้ว นั่นเป็นสาเหตุที่ 'npm' ส่งคำเตือนที่เลิกใช้แล้ว:
ขั้นตอนที่ 2: การใส่รหัสจำลอง
สร้าง “ .js ” ในไดเร็กทอรีโปรเจ็กต์ Node.js ซึ่งเป็นไฟล์ที่โปรแกรมต่างๆ จะถูกแทรกและดำเนินการในภายหลัง จากนั้น แทรกบรรทัดโค้ดด้านล่างเพื่อแสดงการใช้งานจริงของ ' ขอ ” โมดูลดังแสดงด้านล่าง:
ค่าคงที่ คำขอObj = จำเป็นต้อง ( 'ขอ' )ให้ baseUrl = 'https://jsonplaceholder.typicode.com/todos/6' ;
คำขอObj ( ฐาน URL, ( ปัญหาเนื้อหา ) => {
ถ้า ( ปัญหา ) คอนโซล บันทึก ( ปัญหา )
คอนโซล บันทึก ( เนื้อหา ) ;
} ) ;
คำอธิบายของบล็อกโค้ดข้างต้นมีดังนี้:
- ประการแรก “ ขอ ” โมดูลถูกนำเข้าแล้ว และอ็อบเจ็กต์ของมันถูกเก็บไว้ในตัวแปรใหม่ชื่อ “ คำขอObj '.
- จากนั้น URL ของไฟล์ JSON ออนไลน์บางไฟล์ที่ต้องดึงเนื้อหาจะถูกส่งผ่านเป็นค่าสำหรับ ' ฐานUrl ” ชื่อตัวแปร
- จากนั้น “ คำขอObj ” ตัวแปรถูกเรียกใช้เป็นตัวสร้างและ “ ฐานUrl ” ถูกส่งผ่านเป็นพารามิเตอร์แรก และฟังก์ชันเรียกกลับเป็นพารามิเตอร์ตัวที่สอง
- ภายในฟังก์ชันการโทรกลับ “ ถ้า ” ใช้เพื่อแสดงข้อผิดพลาดที่เกิดขึ้นและข้อมูลที่ดึงมาจะแสดงบนหน้าต่างคอนโซลด้วย
ขั้นตอนที่ 3: การดำเนินการ
หากต้องการรันโค้ดข้างต้น ให้รันไฟล์ที่มีชื่อ “ proApp.js ” ในกรณีของเราโดยใช้คำสั่ง:
โหนด proApp เจสผลลัพธ์หลังการดำเนินการแสดงว่าข้อมูลที่ระบุได้รับการดึงและแสดงบนคอนโซล:
ทางเลือกอื่นของโมดูลคำขอ Node.js
เนื่องจากการเสื่อมราคาของ “ ขอ ” โมดูล มีโมดูลภายนอกใหม่จำนวนมากที่สามารถใช้เพื่อทำงานที่คล้ายกันได้ โมดูลทางเลือกเหล่านี้มีการระบุไว้ด้านล่าง:
ทางเลือก | คำอธิบาย |
โหนดดึงข้อมูล | เป็นโมดูลสัญญาหรือแบบสตรีมที่นำเมธอด window.fetch() มาไว้ใน Node.js |
http | “ http ” เป็นโมดูลเริ่มต้นที่ Node.js มอบให้ และมีหลายวิธีในการโต้ตอบกับเซิร์ฟเวอร์ http ในขณะที่ให้อิสระมากขึ้น |
axios | อิงตามสัญญาและสตรีมอย่างแท้จริงในการดำเนินการร้องขอ HTTP ผ่านเบราว์เซอร์จากทั้งเซิร์ฟเวอร์และไคลเอนต์ |
ได้รับ | มันเป็นมิตรกับมนุษย์เป็นพิเศษและเป็นไลบรารีที่ทรงพลังที่สุดสำหรับคำขอ HTTP |
ตัวแทนซุปเปอร์ | อิงตามการผูกมัดและสัญญาในขณะที่ให้การสนับสนุนไคลเอนต์ HTTP ระดับสูงจำนวนมาก มีช่วงการเรียนรู้ต่ำเช่นกัน |
งอ | เป็น HTTP การทำงานที่ส่งคืนฟังก์ชันประเภทอะซิงก์ |
ทำให้ดึงข้อมูลเกิดขึ้น | รูปแบบที่เพิ่มขึ้นของ “ โหนดดึงข้อมูล ' โมดูล. ขณะนี้มี 'การรวมคำขอ' 'การสนับสนุนแคช' และอื่นๆ อีกมากมายเช่นกัน |
เข็ม | โมดูลนี้เป็นโมดูลที่ชัดเจนและก้าวหน้าที่สุด ส่วนใหญ่จะใช้เพื่อดึงข้อมูลโดยการส่งคำขอไปยังแหล่งบุคคลที่สาม |
จิ๋ว-json-http | ไคลเอ็นต์ HTTP แบบเรียบง่ายใช้เพื่อดำเนินการเพย์โหลด JSON |
ตอนนี้ เรามาดำเนินการร้องขอ HTTP โดยใช้โมดูลบางส่วนที่กล่าวถึงข้างต้น
วิธีที่ 1: การร้องขอ HTTP โดยใช้โมดูล HTTP เริ่มต้น
“ http ” เป็นโมดูลเริ่มต้นเนื่องจากได้รับการติดตั้งโดยอัตโนมัติในขณะที่เริ่มต้นโครงการ node.js โดยการรันคำสั่ง “ เวลาเริ่มต้น npm ' หรือ ' npm เริ่มต้น -y '. เนื่องจากเราได้สร้างโปรเจ็กต์ node.js แล้ว เราจึงข้ามขั้นตอนการเริ่มต้นที่แสดงไว้ตอนต้นของบทความนี้ และเจาะลึกไปที่การสร้างคำขอ http โดยตรงโดยใช้โมดูล “http”
ในตัวอย่างโค้ดด้านล่าง เซิร์ฟเวอร์ได้ถูกสร้างขึ้น และเป็นการตอบกลับ ข้อความจำลองจะถูกส่งไปยังเซิร์ฟเวอร์:
ค่าคงที่ httpObj = จำเป็นต้อง ( 'http' ) ;ค่าคงที่ เซิร์ฟเวอร์ท้องถิ่น = httpObj. สร้างเซิร์ฟเวอร์ ( ( การร้องขอการตอบสนอง ) => {
การตอบสนอง. เขียน ( 'ยินดีต้อนรับสู่เพจทวิตเตอร์' ) ;
การตอบสนอง. จบ ( ) ;
} ) ;
เซิร์ฟเวอร์ท้องถิ่น ฟัง ( 8080 , ( ) => {
คอนโซล บันทึก ( 'เซิร์ฟเวอร์เริ่มต้นที่พอร์ตหมายเลข 8080' ) ;
} ) ;
ในบล็อคโค้ดด้านบน:
- ประการแรก “ http ” โมดูลถูกนำเข้าภายในไฟล์ปัจจุบันและวัตถุถูกเก็บไว้ในตัวแปรใหม่ชื่อ “ httpObj '.
- ต่อไปเซิร์ฟเวอร์ชื่อ “ เซิร์ฟเวอร์ท้องถิ่น ” ถูกสร้างขึ้นโดยการเรียกใช้ “ สร้างเซิร์ฟเวอร์() ” และส่งฟังก์ชันการโทรกลับเป็นพารามิเตอร์
- ภายในฟังก์ชันนี้ ให้เรียกใช้ ' เขียน() ” และกำหนดข้อความจำลองที่แสดงบนเซิร์ฟเวอร์ นอกจากนี้ ให้ปิดเซสชันการตอบกลับด้วยการเรียกใช้ ' จบ() ” ข้อความจำลองแบบสุ่มสามารถแทรกลงในวงเล็บวิธีการได้
- หลังจากนั้นให้เซิร์ฟเวอร์นี้ดำเนินการผ่าน localhost ที่มีหมายเลขพอร์ตเป็น “ 8080 ” โดยเรียกใช้ “ ฟัง() ' วิธี.
รันโค้ดด้านบนที่มีไฟล์โดยการรันคำสั่งด้านล่าง:
โหนด < ชื่อไฟล์. เจส >ผลลัพธ์ที่สร้างขึ้นยืนยันว่าคำขอ HTTP ได้ดำเนินการผ่านค่าเริ่มต้น “ http ' โมดูล:
วิธีที่ 2: การสร้างคำขอ HTTP โดยใช้โมดูล Axios ภายนอก
“ axios ” เป็นโมดูลที่ได้รับความนิยมและใช้กันอย่างแพร่หลายมากที่สุดเมื่อพูดถึงการดำเนินการคำขอ HTTP ในสภาพแวดล้อมแบบเรียลไทม์ หากต้องการใช้โมดูลนี้ นักพัฒนาจะต้องติดตั้งก่อนโดยดำเนินการคำสั่งด้านล่าง:
ติดตั้ง axios.npmหลังจากดำเนินการคำสั่ง Terminal จะปรากฏดังนี้:
ตอนนี้เรามาดูตัวอย่างที่ “ รับ ” คำขอ HTTP จะถูกนำมาใช้เพื่อดึงข้อมูลจาก API แบบสุ่ม จากนั้นข้อมูลที่ได้รับจะแสดงบนคอนโซลด้วย:
ค่าคงที่ axiosObj = จำเป็นต้อง ( 'แอกซิออส' ) ;// URL ของ JSON Placeholder API เพื่อเลือกเฉพาะบางส่วนของข้อมูลที่มี ID เท่ากับ 5
ค่าคงที่ apiUrl = 'https://jsonplaceholder.typicode.com/todos/5' ;
// กำลังเริ่มต้นคำขอ GET
axiosObj. รับ ( apiUrl )
. แล้ว ( การตอบสนอง => {
คอนโซล บันทึก ( 'สถานะสำหรับการตอบกลับจาก API คือ:' , การตอบสนอง. สถานะ ) ;
คอนโซล บันทึก ( 'ข้อมูลที่ได้รับจาก API เป็นการตอบสนองต่อคำขอ:' , การตอบสนอง. ข้อมูล ) ;
} )
. จับ ( ข้อผิดพลาด => {
คอนโซล ข้อผิดพลาด ( 'เกิดข้อผิดพลาด:' , ข้อผิดพลาด ) ;
} ) ;
คำอธิบายของบล็อกโค้ดข้างต้นระบุไว้ด้านล่าง:
- ขั้นแรก นำเข้า ' axios ” ไลบรารีและจัดเก็บอินสแตนซ์ไว้ในตัวแปรชื่อ “ axiosObj ” ซึ่งทำหน้าที่เป็นวัตถุของไลบรารี “axios”
- ต่อไปให้สร้างตัวแปร “ apiUrl ” และจัดเก็บ URL ของ API ที่ต้องการดึงข้อมูล ในกรณีของเรา URL คือ “ https://jsonplaceholder.typicode.com/todos/5 ” เพราะเราต้องการดึงข้อมูลที่มี ID เป็น “ 5 '.
- ตอนนี้ด้วยความช่วยเหลือของ “ axiosObj ” เรียกใช้ “ รับ() ” วิธีการและผ่าน “ URL ของแอป ” ตัวแปรภายในวงเล็บเมธอดนี้
- แนบ “ แล้ว() ” วิธีการที่มี “ รับ() ” วิธีการและสร้างฟังก์ชันลูกศรที่ไม่ระบุชื่อที่มีพารามิเตอร์เดียวของ “ การตอบสนอง '.
- นี้ ' การตอบสนอง ” ทำหน้าที่เป็นวัตถุที่มีค่าหรือข้อมูลที่ส่งคืนเพื่อตอบสนองต่อคำขอผ่านทาง “ รับ() ' วิธี.
- ด้วยความช่วยเหลือนี้” การตอบสนอง ” ดึงสถานะของคำขอและเนื้อหาโดยแนบไฟล์ “ สถานะ ' และ ' ข้อมูล ” คำหลักที่อยู่ติดกัน
- สุดท้ายแนบ “ จับ() ” วิธีการแสดงข้อผิดพลาดหากเกิดขึ้นระหว่างการทำงานของโปรแกรม
ตอนนี้ให้คอมไพล์โค้ดด้านบนในสภาพแวดล้อม Node.js โดยใช้คำสั่งด้านล่างบนเทอร์มินัล:
โหนด < ชื่อไฟล์ >ผลลัพธ์ที่แสดงแสดงว่าข้อมูลที่ร้องขอได้รับการดึงมาจากแหล่งที่ให้มาเป็นการตอบกลับและแสดงบนหน้าต่างคอนโซล:
นั่นคือทั้งหมดที่เกี่ยวกับการสร้างคำขอ HTTP ด้วย Node.js Request Module และภาพรวมโดยย่อของทางเลือกอื่น
บทสรุป
หากต้องการส่งคำขอ HTTP ผ่านทาง “ ขอ ” โมดูล URL ที่ต้องการจากตำแหน่งที่จะดำเนินการดึงข้อมูล จากนั้น อินสแตนซ์โมดูล “คำขอ” จะถูกสร้างขึ้น และส่ง URL ที่เลือกซึ่งจำเป็นต้องใช้คำขอ HTTP ให้เป็นพารามิเตอร์แรก ฟังก์ชันการโทรกลับที่จำเป็นยังใช้เพื่อตรวจสอบข้อผิดพลาดที่เกิดขึ้น และดึงเนื้อหาหรือการตอบสนองของคำขอ HTTP คู่มือนี้ได้อธิบายกระบวนการสร้างคำขอ HTTP โดยใช้โมดูลคำขอ