Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

GET และ POST ในการเขียนโปรแกรม Python CGI แตกต่างกันอย่างไร


เมธอด GET และ POST

คุณต้องเคยเจอสถานการณ์มากมายเมื่อคุณต้องการส่งข้อมูลบางอย่างจากเบราว์เซอร์ของคุณไปยังเว็บเซิร์ฟเวอร์และสุดท้ายไปยังโปรแกรม CGI ของคุณ บ่อยที่สุด เบราว์เซอร์ใช้สองวิธี โดยสองวิธีส่งข้อมูลนี้ไปยังเว็บเซิร์ฟเวอร์ วิธีการเหล่านี้คือวิธี GET และวิธี POST

ส่งข้อมูลโดยใช้วิธี GET

เมธอด GET จะส่งข้อมูลผู้ใช้ที่เข้ารหัสซึ่งต่อท้ายคำขอของเพจ หน้าและข้อมูลที่เข้ารหัสจะถูกคั่นด้วย ? อักขระดังต่อไปนี้ −

https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2

เมธอด GET เป็นวิธีการเริ่มต้นในการส่งผ่านข้อมูลจากเบราว์เซอร์ไปยังเว็บเซิร์ฟเวอร์ และสร้างสตริงยาวที่ปรากฏในช่อง Location:box ของเบราว์เซอร์ของคุณ อย่าใช้วิธี GET หากคุณมีรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ เพื่อส่งผ่านไปยังเซิร์ฟเวอร์ วิธี GET มีข้อจำกัดด้านขนาด:สามารถส่งอักขระได้เพียง 1024 ตัวในสตริงคำขอ เมธอด GET จะส่งข้อมูลโดยใช้ส่วนหัว QUERY_STRING และจะสามารถเข้าถึงได้ในโปรแกรม CGI ของคุณผ่านตัวแปรสภาพแวดล้อม QUERY_STRING

คุณสามารถส่งข้อมูลโดยเพียงแค่เชื่อมคู่คีย์และค่าเข้ากับ URL ใดๆ หรือคุณสามารถใช้แท็ก HTML

เพื่อส่งข้อมูลโดยใช้เมธอด GET

ตัวอย่าง URL อย่างง่าย - รับเมธอด

นี่คือ URL แบบง่าย ซึ่งส่งผ่านสองค่าไปยังโปรแกรม hello_get.py โดยใช้เมธอด GET

/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI

ด้านล่างคือสคริปต์ hello_get.py สำหรับจัดการอินพุตที่ได้รับจากเว็บเบราว์เซอร์ เราจะใช้โมดูล cgi ซึ่งทำให้ง่ายต่อการเข้าถึงข้อมูลที่ส่งผ่าน -

#!/usr/bin/python# นำเข้าโมดูลสำหรับการจัดการ CGI นำเข้า cgi, cgitb# สร้างอินสแตนซ์ของ FieldStorageform =cgi.FieldStorage()# รับข้อมูลจาก fieldfirst_name =form.getvalue('first_name')last_name =form.getvalue ('last_name')print "Content-type:text/html\r\n\r\n"print ""print ""print "สวัสดี - โปรแกรม CGI ที่สอง" พิมพ์ "print ""print "

สวัสดี %s %s

" % (first_name, last_name)print ""print "

สิ่งนี้จะสร้างผลลัพธ์ดังต่อไปนี้ -

สวัสดี ZARA ALI

ตัวอย่างแบบฟอร์มอย่างง่าย - วิธีรับ

ตัวอย่างนี้ส่งผ่านสองค่าโดยใช้แบบฟอร์ม HTML และปุ่มส่ง เราใช้สคริปต์ CGI เดียวกัน hello_get.py เพื่อจัดการกับอินพุตนี้

First Name: 
นามสกุล:

นี่คือผลลัพธ์ที่แท้จริงของแบบฟอร์มด้านบน โดยคุณป้อนชื่อและนามสกุล จากนั้นคลิกปุ่มส่งเพื่อดูผลลัพธ์

ชื่อ:นามสกุล:ส่ง

การส่งข้อมูลโดยใช้วิธีการ POST

โดยทั่วไปแล้ววิธีการที่เชื่อถือได้มากขึ้นในการส่งข้อมูลไปยังโปรแกรม CGI คือวิธี POST เป็นแพ็กเกจข้อมูลในลักษณะเดียวกับเมธอด GET แต่แทนที่จะส่งเป็นสตริงข้อความหลัง ? ใน URL จะส่งเป็นข้อความแยกต่างหาก ข้อความนี้มาสู่สคริปต์ CGI ในรูปแบบของอินพุตมาตรฐาน

ด้านล่างนี้เป็นสคริปต์ hello_get.py เดียวกันกับที่ใช้กับ GET และวิธี POST

#!/usr/bin/python# นำเข้าโมดูลสำหรับการจัดการ CGI นำเข้า cgi, cgitb# สร้างอินสแตนซ์ของ FieldStorageform =cgi.FieldStorage()# รับข้อมูลจาก fieldfirst_name =form.getvalue('first_name')last_name =form.getvalue ('last_name')print "Content-type:text/html\r\n\r\n"print ""print ""print "สวัสดี - โปรแกรม CGI ที่สอง" พิมพ์ "print ""print "

สวัสดี %s %s

" % (first_name, last_name)print ""print "

เรามาดูตัวอย่างเดียวกันกับด้านบนอีกครั้ง ซึ่งส่งผ่านสองค่าโดยใช้ HTML FORM และปุ่มส่ง เราใช้สคริปต์ CGI เดียวกัน hello_get.py เพื่อจัดการกับอินพุตนี้

First Name:
นามสกุล:

นี่คือผลลัพธ์ที่แท้จริงของแบบฟอร์มด้านบน คุณป้อนชื่อและนามสกุลแล้วคลิกปุ่มส่งเพื่อดูผลลัพธ์

ชื่อ:นามสกุล:ส่ง