Python - คำขอ HTTP
http หรือ Hyper Text Transfer Protocol ทำงานบนไคลเอนต์เซิร์ฟเวอร์รุ่น โดยปกติเว็บเบราว์เซอร์คือไคลเอนต์และคอมพิวเตอร์ที่โฮสต์เว็บไซต์เป็นเซิร์ฟเวอร์ ใน python เราใช้โมดูลการร้องขอเพื่อสร้างคำขอ http เป็นโมดูลที่ทรงพลังมากซึ่งสามารถจัดการกับหลาย ๆ ด้านของการสื่อสาร http นอกเหนือจากข้อมูลการร้องขอและการตอบกลับธรรมดา สามารถจัดการการรับรองความถูกต้องการบีบอัด / การคลายการบีบอัดคำขอเป็นก้อนเป็นต้น
ไคลเอนต์ HTTP ส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์ในรูปแบบของข้อความร้องขอซึ่งรวมถึงรูปแบบต่อไปนี้:
- คำขอบรรทัด
- ช่องส่วนหัวศูนย์หรือมากกว่า (ทั่วไป | คำขอ | เอนทิตี) ตามด้วย CRLF
- บรรทัดว่าง (กล่าวคือบรรทัดที่ไม่มีอะไรนำหน้า CRLF) ระบุจุดสิ้นสุดของฟิลด์ส่วนหัว
- ข้อความ - เนื้อความ
ส่วนต่อไปนี้อธิบายแต่ละเอนทิตีที่ใช้ในข้อความคำร้องขอ HTTP
คำขอ - บรรทัด
Request-Line เริ่มต้นด้วยโทเค็นเมธอดตามด้วย Request-URI และเวอร์ชันโปรโตคอลและลงท้ายด้วย CRLF องค์ประกอบถูกคั่นด้วยอักขระ SP เว้นวรรค
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
เรามาดูแต่ละส่วนที่กล่าวถึงใน Request-Line
วิธีการขอ
คำขอ method ระบุวิธีการที่จะดำเนินการกับทรัพยากรที่ระบุโดยที่กำหนด Request-URI. วิธีนี้คำนึงถึงตัวพิมพ์เล็กและใหญ่และควรกล่าวถึงตัวพิมพ์ใหญ่เสมอ ตารางต่อไปนี้แสดงวิธีการที่รองรับทั้งหมดใน HTTP / 1.1
SN | วิธีการและคำอธิบาย |
---|---|
1 | GET เมธอด GET ใช้เพื่อดึงข้อมูลจากเซิร์ฟเวอร์ที่กำหนดโดยใช้ URI ที่กำหนด คำขอโดยใช้ GET ควรดึงข้อมูลเท่านั้นและไม่ควรมีผลกระทบอื่นใดกับข้อมูล |
2 | HEAD เหมือนกับ GET แต่จะโอนสายสถานะและส่วนหัวเท่านั้น |
3 | POST คำขอ POST ใช้เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ตัวอย่างเช่นข้อมูลลูกค้าการอัปโหลดไฟล์ ฯลฯ โดยใช้แบบฟอร์ม HTML |
4 | PUT แทนที่การแสดงปัจจุบันทั้งหมดของทรัพยากรเป้าหมายด้วยเนื้อหาที่อัปโหลด |
5 | DELETE ลบการแสดงปัจจุบันทั้งหมดของทรัพยากรเป้าหมายที่กำหนดโดย URI |
6 | CONNECT สร้างอุโมงค์ไปยังเซิร์ฟเวอร์ที่ระบุโดย URI ที่กำหนด |
7 | OPTIONS อธิบายตัวเลือกการสื่อสารสำหรับทรัพยากรเป้าหมาย |
8 | TRACE ทำการทดสอบข้อความวนกลับพร้อมกับเส้นทางไปยังทรัพยากรเป้าหมาย |
คำขอ -URI
Request-URI เป็น Uniform Resource Identifier และระบุทรัพยากรที่จะใช้คำขอ ต่อไปนี้เป็นแบบฟอร์มที่ใช้บ่อยที่สุดในการระบุ URI:
Request-URI = "*" | absoluteURI | abs_path | authority
SN | วิธีการและคำอธิบาย |
---|---|
1 | เครื่องหมายดอกจัน *ใช้เมื่อคำขอ HTTP ไม่ได้ใช้กับทรัพยากรใดทรัพยากรหนึ่ง แต่ใช้กับเซิร์ฟเวอร์เองและจะได้รับอนุญาตก็ต่อเมื่อวิธีการที่ใช้ไม่จำเป็นต้องใช้กับทรัพยากร ตัวอย่างเช่น: OPTIONS * HTTP/1.1 |
2 | absoluteURIใช้เมื่อมีการร้องขอ HTTP ไปยังพร็อกซี พร็อกซีถูกร้องขอเพื่อส่งต่อคำขอหรือบริการจากแคชที่ถูกต้องและส่งคืนการตอบกลับ ตัวอย่างเช่น: GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
3 | รูปแบบที่พบบ่อยที่สุดของ Request-URI คือที่ใช้เพื่อระบุทรัพยากรบนเซิร์ฟเวอร์ต้นทางหรือเกตเวย์ ตัวอย่างเช่นไคลเอ็นต์ที่ต้องการดึงทรัพยากรโดยตรงจากเซิร์ฟเวอร์ต้นทางจะสร้างการเชื่อมต่อ TCP ไปยังพอร์ต 80 ของโฮสต์ "www.w3.org" และส่งบรรทัดต่อไปนี้: GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org โปรดทราบว่าเส้นทางสัมบูรณ์ต้องไม่ว่างเปล่า หากไม่มีอยู่ใน URI ดั้งเดิมจะต้องกำหนดเป็น "/" (รูทเซิร์ฟเวอร์) |
ใช้คำขอ Python
เราจะใช้คำขอโมดูลสำหรับการเรียนรู้เกี่ยวกับคำขอ http
pip install requests
ในตัวอย่างด้านล่างเราจะเห็นกรณีของคำขอ GET อย่างง่ายและพิมพ์ผลลัพธ์ของการตอบกลับ เราเลือกพิมพ์เฉพาะ 300 ตัวอักษรแรกเท่านั้น
# How to make http request
import requests as req
r = req.get('http://www.tutorialspoint.com/python/')
print(r.text)[0:300]
เมื่อเรารันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้ -
<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="utf-8">
<title>Python Tutorial</title>
<meta name="description" content="Python Tutorial