2013-08-07 16 views
6

Zacząłem od ActiveResource, ale szybko uderzyłem w ścianę. Nie można uzyskać ActiveResource do pracy przy nadpisywaniu to_json i to_xml w modelu bazowym. Ponadto nie można utworzyć reprezentacji zasobów wstawiających łącza do wygenerowanego dokumentu XML. No dobra, używam Rails 3.2.1.Jak zaimplementować HATEOAS w Railsach

Zrobiłem trochę badań i dowiedziałem się o jego klejnotach. Próbowałem, z jakiegoś powodu nie działa dla mnie. Więc moje pytanie brzmi:

Jeśli mam jednego zasobu (powiedzmy książki) gościła w jednym miejscu internetowej (coś jak http://books.org), a innym zasobem (powiedzmy studentów, http://students.org), którego gospodarzem w innej stronie internetowej, jak mogę dostać książki przedstawić się uczniowi w pełnej chwały HATEOS?

Udało mi się zdobyć zasób książki, aby przedstawić uczniowi pytanie jako dokument XML. Zrobiłem to za pomocą wanilii Rails ActiveResource na stronie uczniów. Utworzono zasób książki, który dziedziczy po ActiveResource::Base. Następnie podałem self.site i self.element_name, po czym mogłem wykonać pewne podstawowe zapytania typu ActiveRecord na stronie książek zdalnych. Jedyną rzeczą, która zadziałała, było Book.all i Book.find(1). Nawet to nie było zadowalające, ponieważ reprezentacja zawierała wszystkie kolumny bazy danych i chciałem przynajmniej usunąć niektóre z nich, co okazało się niemożliwe.

Porzuciłem to podejście, zastanawiam się, czy istnieje działający przykład w Railsach, gdzie można zbudować bardziej wyrafinowaną reprezentację zasobu (np. Książek), który będzie zawierał linki, które będą napędzać aplikację transfer państwowy? Uważam po prostu niewiarygodne, że tak prosty wymóg wydaje się tak diabelnie trudny do wdrożenia w Railsach. Wszystko, co próbuję zrobić, to stworzyć reprezentację zasobu, który będzie zawierał linki prowadzące konsumenta do odkrycia tego, do czego ten zasób jest zdolny. Interesuje mnie przede wszystkim implementacja workflow, który jest warstwowym, obiegowym procesem konwersacyjnego procesu odkrywania.

Odpowiedz

1

W Railsach należy zmienić sposób serializacji obiektu, jeśli użytkownik chce to zrobić w JSON. (Musisz zastąpić sposób, w jaki Railsi odwzorowują reprezentacje zasobów.) Najczęstszym klejnotem do zrobienia byłoby: https://github.com/rails-api/active_model_serializers

Jeśli nie chcesz używać AMS lub chcesz zwrócić HTML, rozważ podążanie za tym wzorem prezentera : http://blog.steveklabnik.com/posts/2012-01-06-implementing-hateoas-with-presenters

Powiązane problemy