Notice: Bài viết này được tôi viết từ thời còn sinh viên, lúc còn non trẻ - thời mà restful cũng chưa ra những standard như hiện nay (2015). Các bạn đọc và so sánh với những kiến thức hiện tại nhé. Tôi sẽ cố gắng cập nhật nội dung bài viết này sớm :D

Trong lập trình web. Để xử lý việc nhận gửi thông tin từ 1 form của người dùng nhập vào là rất thường xuyên.

Chúng ta thường sử dụng 2 phương thức POST và GET (ngoài các phương thức sẽ được sử dụng khi làm việc với RESTFUL webservice như PUT, DELETE sẽ được trình bày ở các bài sau liên quan đến RESTFUL webservice).

Tuy nhiên lúc nào sử dụng POST, lúc nào sử dụng GET ? Câu hỏi đó ko dễ trả lời vì có những cái chúng ta thường xuyên dùng 1 cách thói quen, chỉ biết dùng sao cũng chạy cả nên rất ít người hiểu rõ và trả lời được câu hỏi này.

Sau đây là sự giống nhau và khác biệt giữa chúng.

  • Giống nhau: Đều gửi dữ liệu tới server để xử lý, sau khi người dùng nhập thông tin vào Form
  • Khác nhau:
    • POST: Bảo mật hơn POST vì dữ liệu được gửi ngầm, không xuất hiện trên URL không hẳn, vì form data cũng có thể capture được, bạn có thể dùng tính năng inspect của browser và lấy được formdata gửi đi
    • GET: Dữ liệu được gửi tường minh, chúng ta có thể nhìn thấy trên URL, đây là lý do khiến nó không bảo mật so với POST - không hẳn vì data của POST cũng có thể thấy được
    • Khi dùng phương thức POST thì server luôn thực thi và trả về kết quả cho client, còn GET sẽ xem xét ứng với cùng 1 yêu cầu sẽ xem trong **cached **có kết quả tương ứng với yêu cầu sẽ trả về ngay không cần phải thực thi các yêu cầu đó ở phía server
    • Đối với những dự liệu luôn được thay đổi thì chúng ta nên sử dụng phương thức POST, còn dữ liệu ít thay đổi chúng ta dùng phương thức GET để truy xuất và xử lý nhanh hơn

Sau bao năm đi làm, review lại tôi thấy bài này khá là nhiều bạn ghé đọc, cho nên tôi nghĩ mình cần update lại những điểm quan trọng, không thì làm hổng kiến thức của những bạn mới tiếp cận lập trình web.

Về mặt bảo mật dữ liệu, che đậy thông tin truyền đi thì không khác nhaunguyên, mà tương đương nhau

GET - tiện cho việc chia sẻ thông tin hơn ví dụ, bạn chỉ cần link URL cho bạn bè là bạn bè có thể xem được, thường thì dữ liệu public, ai cũng có thể đọc, tiện chia sẻ, tài nguyên của trang web thì sẽ dùng GET

POST - tiện cho tác vụ tạo mới (create) tài nguyên