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