Để đặt nó theo một cách khác, những điều cơ bản đằng sau tính không cần thiết là hoạt động GET không ảnh hưởng đến kết quả hoạt động. Nghĩa là, GET có thể được lặp lại một cách an toàn mà không có tác dụng phụ nào.
Tuy nhiên, yêu cầu không có giá trị không liên quan gì đến việc thể hiện tài nguyên.
Hai ví dụ giả tạo:
GET /current-time
GET /current-weather/90210
Như nên được rõ ràng, các nguồn lực này sẽ thay đổi theo thời gian, một số tài nguyên thay đổi nhanh hơn so với những người khác. Nhưng hoạt động GET chính nó không phải là germane trong việc ảnh hưởng đến tài nguyên thực tế.
Contrast để:
GET /next-counter
Đây là, rõ ràng là tôi hy vọng, không phải là một yêu cầu idempotent. Bản thân yêu cầu đang thay đổi tài nguyên.
Ngoài ra, không có gì có thể nói rằng một hoạt động không có tính chất không có tác dụng phụ. Rõ ràng, nhiều truy cập và yêu cầu nhật ký hệ thống, bao gồm cả GET. Do đó, khi bạn thực hiện GET/resource, các bản ghi sẽ thay đổi do kết quả của GET đó. Đó là loại ảnh hưởng phụ không làm cho GET không phải là idempotent. Tiền đề cơ bản là ảnh hưởng đến chính tài nguyên đó.
Nhưng những gì về, nói:
GET /logs
Nếu các bản ghi đăng ký mọi yêu cầu và GET đang trở lại các bản ghi trong trạng thái hiện tại của họ, điều đó có nghĩa rằng GET trong trường hợp này là không idempotent? Yup! Thật sự nó có ảnh hưởng sao? Không. Không phải cho trường hợp một cạnh này. Chỉ là bản chất của trò chơi.
gì về:
GET /random-number
Nếu bạn đang sử dụng một bộ tạo số giả ngẫu nhiên, hầu hết những thức ăn khi bản thân họ. Bắt đầu với một hạt giống và cho kết quả của họ trở lại với chính mình để có được số tiếp theo. Vì vậy, bằng cách sử dụng GET ở đây có thể không phải là idempotent. Nhưng nó là? Làm cách nào để biết số ngẫu nhiên được tạo ra như thế nào. Nó có thể là một nguồn tiếng ồn trắng. Và tại sao bạn quan tâm? Nếu tài nguyên chỉ đơn giản là một số ngẫu nhiên, bạn thực sự không biết liệu hoạt động có thay đổi hay không.
Nhưng chỉ vì có thể có ngoại lệ đối với nguyên tắc, không nhất thiết làm mất hiệu lực các khái niệm đằng sau các nguyên tắc đó.
Thay đổi tài nguyên, đó là một thực tế đơn giản của cuộc sống. Việc thể hiện tài nguyên không phải là phổ quát hoặc nhất quán giữa các yêu cầu hoặc nhất quán giữa người dùng. Theo nghĩa đen, sự biểu diễn của một nguồn tài nguyên là những gì mà GET mang lại, và nó phụ thuộc vào ứng dụng, sử dụng ai biết tiêu chí nào để xác định biểu diễn đó cho mỗi yêu cầu. Các yêu cầu không có giá trị là rất tốt vì chúng hoạt động tốt với phần còn lại của mô hình REST - những thứ như bộ nhớ đệm và thương lượng nội dung.
Hầu hết các tài nguyên không thay đổi nhanh chóng, và dựa vào các giao dịch cụ thể, sử dụng động từ không phải ngẫu nhiên, cung cấp giao diện có thể đoán trước và nhất quán hơn cho khách hàng. Khi một phương thức được cho là không có giá trị, khách hàng sẽ rất ngạc nhiên khi nó không trở thành trường hợp. Nhưng cuối cùng, nó lên đến ứng dụng và giao diện tài liệu của nó.
Chỉnh sửa đẹp trên tiêu đề! –