Idempotent trong lập trình web

Hiện tại em đang tìm hiểu về Servlet/Jsp. Khi em đọc cuốn Head first servlet and jsp tới đoạn doGet() và doPost() thì bị vướng lại ở chỗ “IDEMPOTENT”. Ai có thể giải thích giúp em tại sao doGet() không làm thay đổi dữ liệu? Vì em thấy vẫn có thể thêm, xóa database trong hàm doGet() được.
Cảm ơn mọi người quan tâm.

Cái này là làm sai đó :smiley: “GET is safe” là một quy ước chung của HTML.

Idempotent nghĩa là một lệnh cũng như nhiều lệnh. Cái này bạn lại bàn về safety, không thay đổi gì trên server.

xem thêm: https://tools.ietf.org/html/rfc7231#section-4.2

[quote]The purpose of distinguishing between safe and unsafe methods is to
allow automated retrieval processes (spiders) and cache performance
optimization (pre-fetching) to work without fear of causing harm.[/quote]

[quote]Idempotent methods are distinguished because the request can be
repeated automatically if a communication failure occurs before the
client is able to read the server’s response.[/quote]

2 Likes

java web thì mình không rành, nhưng về web nói chung thì nó có 1 số chuẩn chung cho việc giao tiếp giữa front-end và back-end
-GET: chỉ để thực hiện gọi lấy data.
-POST: chỉ để thực hiện thêm data.
-PUT: chỉ để thực hiện update data.
-DELETE: chi de thực hiện xóa data.
tất nhiên GET co thể để thực hien xóa data như bạn nói, nhưng nó không theo chuẩn, nếu học qua môn thì cứ GET, POST mà them,sửa,xóa…còn làm chuyen nghiep thì phải theo chuẩn.
-đại khái như ngày xưa div chứa class header đại diện cho nó là header…nhưng html5 bây h ra hẳn thẻ header rồi.
-1 trong số lý do phải theo chuẩn khi làm chuyen nghiệp là vì làm chuyên thì nhiều ng cùng phát triển 1 ứng dụng, mà ko có quy định chung nào thì việc bảo trì hay là phát triển tiếp là cực kỳ khó. mình hiểu code mình nhưng ko chắc ng khác đọc sẽ hiểu.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?