2012-04-11 22 views
5

Đây là một lý thuyết/tốt nhất câu hỏi thực hành liên quan đến thiết kế RESTful và HATEOAS ...Tác dụng phụ trên các nguồn lực khác

Do nguồn lực:

/myresources/(một bộ sưu tập của các đối tượng tài nguyên của chúng tôi)

/giao dịch/(một tập hợp các giao dịch lịch sử đã xảy ra trong hệ thống)

Có một thực tế có giá trị:

POST/myresources/

không chỉ tạo ra một nguồn lực mới tại/myresources/mà còn là một mới tài nguyên tại/transaction /?

Nói cách khác, có thể POST (hoặc bất kỳ động từ nào) đến một tài nguyên có hiệu lực URL ở cả URL đó và các URL khác không? Có cách tiếp cận nào khác không? Rõ ràng chúng ta có thể sử dụng hai POST, nhưng điều đó đòi hỏi chúng ta phải tin tưởng người dùng duy trì trạng thái hợp lệ trên các sửa đổi đa tài nguyên.

Trả lời

4

Có, điều này là tốt. Hãy tưởng tượng một trường hợp khác mà hệ thống hiển thị một URI /myresources/latest. Khi không có tài nguyên, có thể trả lại 404, nhưng khi bạn bắt đầu POSTING tài nguyên, cả URI chuẩn và URI latest sẽ trả về 200 OK. Có rất nhiều lợi ích hữu ích cho phương pháp này.

Tuy nhiên, hãy lưu ý đến bộ nhớ đệm trong khi bạn thiết kế các tài nguyên đó. Ví dụ: nếu bạn BẬT bộ sưu tập /myresources/, bạn sẽ vô hiệu hóa bộ sưu tập đó trong bất kỳ bộ nhớ cache nào trên đường đi. Tuy nhiên, bạn sẽ không làm mất hiệu lực bộ sưu tập /transactions/ và hai chỉ số có thể không đồng bộ. Mặc dù vậy, chúng có thể không đồng bộ trên toàn bộ hệ thống, tùy thuộc vào biểu đồ bộ nhớ đệm giữa nhiều máy khách và máy chủ gốc, nhưng thường thì khách hàng được thiết kế để mong đợi hành động này ở khoảng cách đồng bộ và bộ nhớ đệm có thể thất vọng trong những trường hợp như thế này.

+0

Suy nghĩ hữu ích, cảm ơn! Vấn đề bộ nhớ đệm sẽ không có trong hầu hết các API RESTful có thể cập nhật được không? Và vấn đề đó sẽ không được giảm nhẹ khi sử dụng các tiêu đề mod cuối cùng? – James

+0

Có; và có, nó có thể. – fumanchu

1

Dường như hoàn toàn hợp lý đối với tôi. Không có cách nào mà người tạo tài nguyên mới có thể cho biết, ví dụ, điều này đã được thực hiện bằng cách có một cuộc thăm dò khách hàng khác cho các tài nguyên mới, sau đó tiêm tài nguyên giao dịch, phải không?

Vì vậy, không có bất kỳ vấn đề khái niệm nào ở cấp đó, hãy nói một mình mức độ "hợp lý cho máy chủ để tạo tài nguyên mới".

Các vấn đề liên quan