Trong một SOA RESTful, giả sử tôi đưa ra yêu cầu POST qua AJAX nhưng tôi không nhận được phản hồi trước khi yêu cầu hết thời gian. Hơn nữa giả sử việc gửi lại yêu cầu sẽ có hại. POST không phải là idempotent. Ví dụ: có thể tôi đăng một khoản tiền chuyển khoản ngân hàng. Nếu tôi không nhận được phản hồi, tôi không biết liệu máy chủ có xử lý yêu cầu hay không.Cách xử lý các yêu cầu POST đã hết thời gian
Cách tốt nhất để giải quyết vấn đề này là gì, giả sử tôi có quyền kiểm soát phía máy khách và bên dịch vụ?
Suy nghĩ ban đầu của tôi là bao gồm một nonce (ví dụ: id giả; một số loại định danh duy nhất) với mỗi yêu cầu POST; ví dụ. có lẽ là một giá trị trong tiêu đề If-None-Match. Với cách tiếp cận này, phía máy khách có thể lập trình lại một yêu cầu được hẹn giờ với cùng một id giả và máy chủ có thể từ chối nó nếu nó chứa một giá trị lặp lại.
nếu bạn không nhận được phản hồi sau một thời gian chờ nhất định, chỉ cần giả sử nó không thành công và yêu cầu khách hàng thử lại hoặc hủy. rõ ràng là mã trên máy chủ nên kiểm tra cùng một id. – alfred
Để rõ ràng, id giả này không có nghĩa là * id tài nguyên * - Tôi không trực tiếp giải quyết tài nguyên. Tôi đang sử dụng POST như dự định; cụ thể là, BẬT cho trình xử lý tài nguyên (ví dụ:/Chuyển, không phải/Chuyển khoản/). Nếu không, tôi sẽ không làm một POST ở nơi đầu tiên. –
johnr
Đây là một câu hỏi tương tự như "[Tránh các POST trùng lặp với REST] (http://stackoverflow.com/q/15159274/1347968)". – siegi