เมื่อคุณสร้างแอปพลิเคชันใน Python อาจมีบางครั้งที่คุณต้องการเชื่อมต่อกับบริการของบุคคลที่สาม ตัวอย่างเช่น หากคุณกำลังสร้างเครื่องมือออกกำลังกาย คุณอาจต้องการเชื่อมต่อกับ Fitbit API เพื่อให้คุณสามารถดูข้อมูลการออกกำลังกายของคุณได้ แอพที่สามารถส่งข้อความอาจเชื่อมต่อกับ Twilio API
ใน Python ไลบรารีคำขอช่วยให้คุณสามารถส่งคำขอเพื่อให้คุณสามารถเชื่อมต่อบริการเว็บของบุคคลที่สามกับแอปพลิเคชันของคุณ ในคู่มือนี้ เราจะเรียนรู้เกี่ยวกับไลบรารีคำขอ Python และวิธีที่คุณสามารถใช้เพื่อส่งคำขอ HTTP
คำขอทางเว็บ:ทบทวน
คำขอเป็นศูนย์กลางของอินเทอร์เน็ต เมื่อคุณคลิกที่บทความนี้ คำขอ HTTP จะถูกส่งไปยังเซิร์ฟเวอร์ Career Karma คำขอนั้นแจ้งเซิร์ฟเวอร์ของเราว่าคุณต้องการดูหน้าเว็บใด เพื่อให้เซิร์ฟเวอร์ของเราสามารถค้นหาหน้านั้นได้ เมื่อพบหน้าเว็บแล้ว เว็บเซิร์ฟเวอร์ของเราจะส่งคืนไปยังเบราว์เซอร์ของคุณ กระบวนการนี้ช่วยให้คุณเห็นบทช่วยสอนนี้
คำขอทางเว็บมีหลายรูปแบบ ประเภทของคำขอที่คุณทำขึ้นเพื่อดูหน้าเว็บนี้เรียกว่าคำขอ GET คำขอประเภทนี้ทำให้คุณสามารถดึงข้อมูลได้ มีคำขอประเภทอื่นๆ เช่น POST และ PUT ซึ่งใช้เพื่อแก้ไขทรัพยากรบนเซิร์ฟเวอร์ สำหรับจุดประสงค์ของบทช่วยสอนนี้ เราจะเน้นที่คำขอ GET และ POST
วิธีการติดตั้งคำขอ
คำขอคือไลบรารี HTTP สำหรับ Python ที่อนุญาตให้คุณส่งคำขอทางเว็บ
ก่อนที่เราจะสามารถสร้างคำขอทางเว็บโดยใช้ Python เราต้องติดตั้งไลบรารีรหัสคำขอ Python ก่อน เราสามารถทำได้โดยใช้คำสั่งต่อไปนี้:
คำขอติดตั้ง pip
เมื่อดาวน์โหลดแพ็คเกจ Python แล้ว เราก็พร้อมที่จะส่งคำขอทางเว็บ
วิธีการขอ GET
คำขอทางเว็บประเภททั่วไปที่คุณจะทำคือคำขอ GET คำขอประเภทนี้ทำให้คุณสามารถดึงข้อมูลจากเซิร์ฟเวอร์ได้
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
สมมติว่าเรากำลังสร้างแอปที่ให้คุณดึงข้อมูลรายการข้อเท็จจริงเกี่ยวกับแมว ในการทำเช่นนั้น เราจะใช้ API ที่เรียกว่า cat-facts API นี้เปิดให้สาธารณชนทั่วไปทราบ ดังนั้นเราจึงไม่จำเป็นต้องมีข้อมูลประจำตัวในการลงชื่อเข้าใช้ เราสามารถใช้รหัสนี้เพื่อส่งคำขอไปยัง API:
นำเข้าการร้องขอ =การร้องขอ.get('https://cat-fact.herokuapp.com/facts')print(res.status_code)
รหัสนี้ส่งคืน:200 มาทำลายรหัสของเรากัน
ในบรรทัดแรก เรานำเข้าไลบรารีคำขอ สิ่งนี้ทำให้เราสามารถเข้าถึงไลบรารีคำขอที่เราจะใช้ในบทช่วยสอนของเรา จากนั้นเราก็ใช้ requests.get()
วิธีการขอเว็บ เราอาจใช้วิธีเช่น .put()
หรือ .post()
เพื่อสร้างคำขอประเภทอื่นๆ แต่ในกรณีนี้ เราจำเป็นต้องดึงข้อมูลจาก cat-facts API เท่านั้น
ต่อไป เราพิมพ์รหัสสถานะจากคำขอทางเว็บของเรา มีการส่งคืนหมายเลข 200 ซึ่งบอกเราว่าคำขอเว็บของเราสำเร็จแล้ว เราจะพูดถึงความหมายของตัวเลขเหล่านี้ในบทช่วยสอนในภายหลัง
การดูคำขอ
ในตัวอย่างข้างต้น เราได้พิมพ์รหัสสถานะของคำขอของเรา แต่เราจะดูข้อมูลที่เราได้ดึงมาได้อย่างไร? ข้อเท็จจริงแมวอยู่ที่ไหน? นั่นคือที่มาของ .text และ .json()
วิธีการเข้ามา
ดูข้อความตอบกลับ
เราสามารถใช้วิธี .text เพื่อดูผลลัพธ์ของคำขอเว็บของเรา:
นำเข้าการร้องขอ =การร้องขอ.get('https://cat-fact.herokuapp.com/facts')print(res.text)
รหัสนี้ส่งคืนรายการข้อเท็จจริงเกี่ยวกับแมว แต่วิธีนี้ใช้ไม่ได้ผลสำหรับเราเพราะข้อมูลที่เรากำลังสืบค้นคือ API แม้ว่าตอนนี้เราจะมีรายการข้อเท็จจริงเกี่ยวกับแมวของ Python แล้ว แต่ก็ยากที่เราจะอ่านเพราะมันเป็นข้อความธรรมดา
ดูการตอบสนอง JSON
รูปแบบที่มีประโยชน์มากกว่าในการจัดเก็บข้อเท็จจริงเกี่ยวกับแมวคือ JSON เราสามารถดึงข้อมูล JSON จากคำขอของเราโดยใช้รหัสนี้:
print(res.json())
รหัสของเราส่งคืนรายการข้อเท็จจริงเกี่ยวกับแมวจำนวนมาก นี่คือบันทึกแรกในรายการ:
{'_id':'58e009550aac31001185ed12', 'text':'วิดีโอแมวที่เก่าที่สุดบน YouTube มีอายุย้อนไปถึงปี 1894', 'type':'cat', 'user':{'_id':'58e007480aac31001185ecef' , 'name':{'first':'Kasimir', 'last':'Schulz'}}, 'upvotes':6, 'userUpvoted':None}
ความสำเร็จ! เราจัดการเพื่อเรียกข้อมูลรายการข้อเท็จจริงเกี่ยวกับแมวของเราได้
วิธีการส่งคำขอ POST
คุณยังสามารถใช้ไลบรารีคำขอเพื่อส่งคำขอ POST ซึ่งจะช่วยให้คุณสามารถแก้ไขข้อมูลที่จัดเก็บบนเว็บเซิร์ฟเวอร์ได้
สำหรับตัวอย่างนี้ เราจะใช้ Airtable API เนื่องจากเราจำเป็นต้องใช้ API ที่รองรับคำขอ POST และ cat-facts API เป็นแบบอ่านอย่างเดียว
สมมติว่าเรามีฐานข้อมูลที่เราบันทึกถ้วยชาที่เราดื่มทั้งหมด เราเพิ่งดื่มชาไปอีกหนึ่งถ้วยและต้องการเพิ่มลงในฐานข้อมูล เราสามารถทำได้โดยใช้รหัสนี้:
ส่วนหัวคำขอนำเข้า ={'Authorization':'Bearer API_KEY','Content-Type':'application/json',}data ='{"records":[{"fields":{"Drink":"Black Decaf Tea"}}]}'res =request.post('https://cat-fact.herokuapp.com/facts', headers=headers, data=data)print(res.json())
รหัสของเราส่งคืน:
{'records':[{'id':'recqUEPuXEAXaNl1L', 'fields':{'Drink':'Black Decaf Tea', 'Date':'2020-06-16T08:53:02.000Z'} , 'createdTime':'2020-06-16T08:53:02.000Z'}]}
สิ่งนี้บอกเราว่าคำขอ HTTP ของเราสำเร็จแล้ว เราเพิ่งเพิ่มบันทึกลงในฐานข้อมูล Airtable โดยใช้ API มาพูดถึงโค้ดเหล่านี้กันต่อไป
ขั้นแรก เรานำเข้าไลบรารีคำขอเพื่อให้เราสามารถส่งคำขอ HTTP ในโค้ดของเราได้
จากนั้นเราได้กำหนดพจนานุกรมที่มีสองคีย์และค่า:หนึ่งที่เก็บคีย์การตรวจสอบของเราและอีกรายการหนึ่งซึ่งระบุประเภทของเนื้อหาที่เราส่งไปยังเว็บเซิร์ฟเวอร์ นี่คือส่วนหัวที่เราจำเป็นต้องส่งเพื่อส่งคำขอไปยัง Airtable API
ต่อไป เราประกาศตัวแปรที่เรียกว่า data ซึ่งเก็บข้อมูลที่เราต้องการส่งไปพร้อมกับคำขอ POST ของเรา ในกรณีนี้ เรากำลังเพิ่มเครื่องดื่มที่เรียกว่า “Black Decaf Tea” ลงในฐานข้อมูลของเรา จากนั้นเราก็ใช้ requests.post()
เมธอดและระบุส่วนหัวและข้อมูลของเราเป็นพารามิเตอร์ ซึ่งทำให้เราสามารถส่งคำขอ POST ไปยัง Airtable API
สุดท้าย เราพิมพ์ผลลัพธ์ของคำขอของเราในรูปแบบ JSON โดยใช้ res.json()
.
รหัสสถานะ HTTP
โปรโตคอล HTTP ส่งคืนรหัสสถานะที่ไม่ซ้ำกันเมื่อคุณส่งคำขอเว็บ วิธีนี้ช่วยให้คุณเห็นว่าคำขอเว็บของคุณสำเร็จหรือไม่ หรือเกิดข้อผิดพลาดใดๆ ขึ้น คุณอาจเคยเห็นสิ่งเหล่านี้มาบ้างแล้ว เช่น 404
นี่คือรายการอ้างอิงของรหัสสถานะที่คุณอาจพบเมื่อทำการร้องขอด้วยคำขอ Python:
- 1XX:ข้อมูล
- 2XX:คำขอสำเร็จแล้ว
- 3XX:คำขอถูกเปลี่ยนเส้นทาง
- 4XX:ข้อผิดพลาดฝั่งไคลเอ็นต์
- 5XX:ข้อผิดพลาดฝั่งเซิร์ฟเวอร์
การทราบรหัสสถานะเหล่านี้ทำให้เราเพิ่มการดีบักในโปรแกรมของเราได้ ลองใช้คำขอ GET จากตัวอย่าง cat-facts API จากก่อนหน้านี้ สมมติว่าเราต้องการพิมพ์ข้อความหากไม่พบทรัพยากรที่เรากำลังเข้าถึง เราสามารถทำได้โดยใช้รหัสนี้:
นำเข้าการร้องขอ =การร้องขอ.get('https://cat-fact.herokuapp.com/facts')if res.status_code ==200:print("Success")else :print("Error")ก่อน>รหัสของเราส่งคืน:สำเร็จ เนื่องจากรหัสสถานะของคำขอของเราคือ 200 ข้อความ "สำเร็จ" จึงถูกพิมพ์ไปที่คอนโซล อย่างไรก็ตาม หากคำขอของเราล้มเหลว ตัวอย่างเช่น เราอาจระบุ URL ที่ไม่ถูกต้อง ข้อความ “ข้อผิดพลาด” จะถูกพิมพ์ไปที่คอนโซล
บทสรุป
ไลบรารีคำขอ Python อนุญาตให้คุณส่งคำขอ HTTP ใน Python ในคู่มือนี้ เราได้พูดถึงวิธีการใช้ไลบรารีคำขอ Python เพื่อส่งคำขอ GET และ POST แต่คุณยังสามารถสร้างคำขอ PUT และ DELETE โดยใช้ไลบรารีได้
เมื่อคุณใช้วิธีเช่น
requests.get()
หรือrequests.post()
, Python จะส่งคำขอไปยังแหล่งข้อมูลบนเว็บที่คุณต้องการเข้าถึง คุณสามารถแนบส่วนหัวและข้อมูลกับคำขอของคุณ ซึ่งช่วยให้คุณส่งข้อมูลได้หากต้องการเปลี่ยนแปลงทรัพยากรบนเว็บที่คุณเป็นเจ้าของ
ตอนนี้คุณพร้อมที่จะเริ่มใช้ไลบรารีคำขอ Python อย่างผู้เชี่ยวชาญแล้ว!