Tôi đã bắt đầu với ActiveResource, nhưng nhanh chóng nhấn vào tường. Không thể làm cho ActiveResource hoạt động khi ghi đè to_json và to_xml trên mô hình cơ bản. Thêm vào đó, không thể làm cho các đại diện tài nguyên chèn các liên kết vào tài liệu xml được tạo ra. Oh btw, tôi đang sử dụng Rails 3.2.1.Cách triển khai HATEOAS trong Rails
Tôi đã làm một ít nghiên cứu và tìm hiểu về đá quý của nó. Đã thử nó, vì một lý do nào đó không hiệu quả với tôi. Vì vậy, câu hỏi của tôi là:
Nếu tôi có một tài nguyên (nói sách) được lưu trữ trong một trang web (một cái gì đó như http://books.org) và một tài nguyên khác (nói sinh viên, http://students.org), được lưu trữ trong một trang web khác, làm cách nào tôi có thể nhận sách tự đại diện cho một sinh viên trong vinh quang HATEOS đầy đủ của họ?
Tôi có thể lấy tài nguyên sách để tự đại diện cho sinh viên yêu cầu dưới dạng tài liệu XML. Tôi đã làm điều đó bằng cách sử dụng vanilla Rails ActiveResource trong trang sinh viên. Tôi đã tạo tài nguyên Sách kế thừa từ ActiveResource::Base
. Sau đó, tôi đã chỉ định self.site
và self.element_name
, sau đó tôi có thể thực hiện một số truy vấn giống như ActiveRecord thô sơ đối với trang sách từ xa. Điều duy nhất hiệu quả với tôi là Book.all
và Book.find(1)
. Thậm chí điều đó cũng không thỏa đáng bởi vì biểu diễn chứa tất cả các cột cơ sở dữ liệu và tôi muốn ít nhất loại bỏ một số cột, điều này hóa ra là không thể. Bây giờ tôi đã bỏ qua cách tiếp cận đó, tôi tự hỏi nếu có một ví dụ làm việc trong Rails, nơi có thể xây dựng một biểu diễn phức tạp hơn về tài nguyên (ví dụ: sách) sẽ chứa các liên kết sẽ thúc đẩy ứng dụng chuyển trạng thái? Tôi tìm thấy nó chỉ đơn giản là không thể tin được rằng một yêu cầu đơn giản như vậy dường như rất khó khăn để thực hiện trong Rails. Tất cả những gì tôi đang cố gắng làm là tạo ra một đại diện của một tài nguyên sẽ bao gồm một số liên kết sẽ hướng dẫn người tiêu dùng khám phá ra những gì mà tài nguyên đó có khả năng. Tôi chủ yếu quan tâm đến việc triển khai quy trình làm việc, đây là loại quy trình khám phá, phân lớp, hành động lột vỏ.