Đây là series phương thức giao tiếp trong HTTP, ở phần đầu tiên chúng ta sẽ đi tìm hiểu tổng quan về các phương thức giao tiếp HTTP. HTTP Request Method chỉ phương thức để được thực hiện trên nguồn được nhận diện bởi Request-URI đã cung cấp như: GET, POST, PUT, HEAD, DELETE,… Với mỗi một phương thức lại có những ưu nhược điểm riêng. Chính vì vậy chúng ta cần phải hiểu rõ các phương thức để sử dụng phù hợp trong thực tế tránh trường hợp rủi ro đáng tiếc có thể xảy ra.

HTTP là gì?

Giao Thức Truyền Tải Siêu Văn Bản (HTTP) được thiết kế cho phép thực hiện các giao tiếp giữa máy khách và máy chủ. HTTP làm việc dựa trên giao thức yêu cầu – phản hồi giữa máy khách và server. Một trình duyệt web có thể là máy khách và một ứng dụng trên máy tính được lưu trữ như một website có thể là server.

Ví dụ: Một máy khách (trình duyệt) gửi yêu cầu HTTP tới server; sau đó server hồi đáp lại yêu cầu của máy khách. Việc hồi đáp này bao gồm thông tin trạng thái về yêu cầu và có thể còn bao gồm cả nội dung đã yêu cầu.

Phương thức GET

Phương thức GET là gì?

Hai phương thức GET và POST là 2 phương thức được sử dụng khá nhiều trong giao tiếp HTTP. Nhưng bài viết này mình cũng chỉ nói tổng quan về các phương thức, ở các bài tiếp theo mình sẽ đi sâu hơn. GET – Các yêu cầu dữ liệu từ một nguồn chỉ định. Lưu ý chuỗi truy vấn (cặp tên / giá trị) được gửi đi trong URL của phương thức truy vấn GET:[code]localhost/myProject/api/get/?name1=value1&name2=value2[/code]

Một số lưu khác về truy vấn GET:

  • Truy vấn GET có thể được lưu lại (cached)
  • Truy vấn GET vẫn được lưu lại trong lịch sử trình duyệt
  • Truy vấn GET có thể được bookmark (đánh dấu rồi xem lại sau)
  • Truy vấn GET không bao giờ được sử dụng để gửi đi các dữ liệu nhạy cảm
  • Truy vấn GET có những hạn chế về chiều dài dữ liệu
  • Truy vấn GET chỉ nên sử dụng cho việc lấy dữ liệu GET

Phương thức POST

Phương thức POST là gì?

POST – Gửi dữ liệu để xử lý tới một nguồn nhất định. Lưu ý rằng chuỗi truy vấn (cặp tên/giá trị) được gửi đi trong thông điệp HTTP của truy vấn request: [code]POST /test/demo_form.php HTTP/1.1
Host: localhost
name1=value1&name2=value2[/code]

Một số lưu ý khác về truy vấn POST:

  • Truy vấn POST không bao giờ được lưu trữ (cached)
  • Truy vấn POST không được lưu lại trong lịch sử tình duyệt
  • Truy vấn POST không thể bookmark
  • Truy vấn POST không hạn chế chiều dài dữ liệu

Các phương thức giao tiếp khác trong HTTP

Các phương thức sau đây ít sử dụng hơn so với các phương thức trên, nhưng không phải nó không quan trọng. Trong một số các phương thức sắp được đề cập dưới đây có một số phương thức đã bị khai tử chỉ còn một vài máy chủ sử dụng, hay một số phương thức không phải chính thống.

  • HEAD: Tương tự như GET nhưng chỉ trả về HTTP header và không có thân tài liệu
  • PUT: Tải lên một đại diện xác định của URI
  • DELETE: Xoá tài nguyên xác định
  • OPTIONS: Quay trở lại phương thức HTTP mà server hỗ trợ
  • CONNECT: Chuyển đổi các yêu cầu kết nối đến một tunnel TCP/IP
  • PATCH: PATCH khác PUT nhưng lại giống POST, nó không phải là idempotent
  • COPY: Phương thức này không còn được phát triển. Vì vậy nó không đảm bảo yêu cầu về an toàn trong kết nối
  • LINK: Nó dùng để kết nối các tài nguyên lại với nhau bởi các URI
  • UNLINK: Đơn giản, nó chỉ là phương thức ngược lại với phương thức LINK
  • PURGE: Nó không phải là phương thức chính thức, có một số máy chủ có phương PURGE như: Squid, Varnish
  • LOCK: Nó cũng giống như COPY đã bị khai tử
  • UNLOCK: Nó cũng đã bị khai tử
  • PROPFIND: Nó cũng đã không còn được hỗ trợ như các phương thức LOCK, UNLOCK, COPY
  • TRACE: Nó là một vòng lặp dữ liệu đến máy chủ

Kết luận

Bài viết còn sơ sài hoặc chưa được đúng đắn mong các bạn thông cảm bỏ qua. Bài tiếp theo chúng ta sẽ đi tìm hiểu về 2 phương được sử dụng khá nhiều đó là: GET và POST.

Các nguồn tham khảo:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

https://msdn.microsoft.com/en-us/library/aa142917(v=exchg.65).aspx

Rate this post

About the author 

tofuadmin

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>