Computer >> Máy Tính >  >> Lập trình >> Python

Sự khác biệt giữa GET và POST trong Lập trình Python CGI là gì?

Phương thức GET và POST

Chắc hẳn bạn đã gặp phải nhiều tình huống khi bạn cần chuyển một số thông tin từ trình duyệt đến máy chủ web và cuối cùng là Chương trình CGI của mình. Thông thường nhất, trình duyệt sử dụng hai phương pháp, hai là truyền thông tin này đến máy chủ web. Các phương thức này là Phương pháp GET và Phương thức ĐĂNG.

Truyền thông tin bằng phương thức GET

Phương thức GET gửi thông tin người dùng đã mã hóa được thêm vào yêu cầu trang. Trang và thông tin được mã hóa được phân tách bằng dấu? ký tự như sau -

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

Phương thức GET là phương thức mặc định để chuyển thông tin từ trình duyệt đến máy chủ web và nó tạo ra một chuỗi dài xuất hiện trong hộp Location:của trình duyệt của bạn. Không bao giờ sử dụng phương thức GET nếu bạn có mật khẩu hoặc thông tin nhạy cảm khác để chuyển đến máy chủ. Phương thức GET có giới hạn về kích thước:chỉ có thể gửi 1024 ký tự trong một chuỗi yêu cầu. Phương thức GET gửi thông tin bằng cách sử dụng tiêu đề QUERY_STRING và sẽ có thể truy cập được trong Chương trình CGI của bạn thông qua biến môi trường QUERY_STRING.

Bạn có thể chuyển thông tin bằng cách chỉ cần nối các cặp khóa và giá trị cùng với bất kỳ URL nào hoặc bạn có thể sử dụng thẻ HTML

để chuyển thông tin bằng phương pháp GET.

Ví dụ về URL đơn giản - Phương pháp lấy

Đây là một URL đơn giản, chuyển hai giá trị đến chương trình hello_get.py bằng phương pháp GET.

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

Dưới đây là tập lệnh hello_get.py để xử lý đầu vào do trình duyệt web cung cấp. Chúng tôi sẽ sử dụng mô-đun cgi, giúp dễ dàng truy cập thông tin đã chuyển -

 #! / usr / bin / python # Nhập mô-đun cho xử lý CGI nhập cgi, cgitb # Tạo phiên bản của FieldStorageform =cgi.FieldStorage () # Lấy dữ liệu từ fieldsfirst_name =form.getvalue ('first_name') last_name =form.getvalue ('last_name') print "Content-type:text / html \ r \ n \ r \ n" print "" print "" print " Xin chào - Chương trình CGI thứ hai " print "" print "" print "

Xin chào% s% s

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

Điều này sẽ tạo ra kết quả sau -

 Xin chào ZARA ALI 

Ví dụ về FORM Đơn giản - Phương pháp GET

Ví dụ này chuyển hai giá trị bằng HTML FORM và nút gửi. Chúng tôi sử dụng cùng một tập lệnh CGI hello_get.py để xử lý đầu vào này.

  Tên: 
Họ:

Đây là kết quả thực tế của biểu mẫu trên, bạn điền Họ và Tên rồi bấm nút gửi để xem kết quả.

 Tên:Họ:Gửi 

Truyền thông tin bằng phương pháp POST

Một phương pháp truyền thông tin đến chương trình CGI thường đáng tin cậy hơn là phương thức POST. Điều này đóng gói thông tin theo cách chính xác như các phương thức GET, nhưng thay vì gửi nó dưới dạng một chuỗi văn bản sau dấu? trong URL, nó sẽ gửi nó dưới dạng một tin nhắn riêng biệt. Thông báo này đi vào tập lệnh CGI ở dạng đầu vào chuẩn.

Dưới đây là cùng một tập lệnh hello_get.py xử lý GET cũng như phương thức POST.

 #! / usr / bin / python # Nhập mô-đun cho xử lý CGI nhập cgi, cgitb # Tạo phiên bản của FieldStorageform =cgi.FieldStorage () # Lấy dữ liệu từ fieldsfirst_name =form.getvalue ('first_name') last_name =form.getvalue ('last_name') print "Content-type:text / html \ r \ n \ r \ n" print "" print "" print " Xin chào - Chương trình CGI thứ hai " print "" print "" print "

Xin chào% s% s

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

Chúng ta hãy lấy lại ví dụ tương tự như trên chuyển hai giá trị bằng HTML FORM và nút gửi. Chúng tôi sử dụng cùng một tập lệnh CGI hello_get.py để xử lý đầu vào này.

 
Tên:
Họ:

Đây là kết quả thực tế của biểu mẫu trên. Bạn điền Họ và Tên rồi bấm nút gửi để xem kết quả.

 Tên:Họ:Gửi