gpt4 book ai didi

ruby-on-rails-3 - 如何在 Rails 中实现 HATEOAS

转载 作者:行者123 更新时间:2023-12-04 15:59:00 25 4
gpt4 key购买 nike

我从 ActiveResource 开始,但很快就碰壁了。在底层模型上覆盖 to_json 和 to_xml 时无法使 ActiveResource 工作。另外,无法使资源表示将链接注入(inject)到生成的 xml 文档中。哦,顺便说一句,我使用的是 Rails 3.2.1。

我做了一些研究,发现了它的 gem 。试过了,由于某种原因对我不起作用。所以我的问题是:

如果我有一个资源(比如书籍)托管在一个网站(例如 http://books.org )和另一个资源(比如学生,http://students.org )托管在另一个网站上,我怎样才能让书籍代表自己?学生在他们的全部 HATEOS 荣耀?

我能够让图书资源以 XML 文档的形式呈现给提问的学生。我通过在学生网站中使用 vanilla Rails ActiveResource 来做到这一点。我创建了继承自 ActiveResource::Base 的 Books 资源.然后我指定了self.siteself.element_name ,之后我能够对远程图书站点执行一些基本的类似 ActiveRecord 的查询。唯一对我有用的是Book.allBook.find(1) .即使这样也不令人满意,因为表示包含所有数据库列,我想至少删除其中的一些列,结果证明这是不可能的。

现在我已经放弃了这种方法,我想知道 Rails 中是否有一个工作示例,可以在其中构建更复杂的资源(即书籍)表示,该表示将包含驱动应用程序状态传输的链接?我发现这样一个简单的要求在 Rails 中实现起来如此困难,这简直令人难以置信。我要做的只是创建一个资源的表示,其中将包含一些链接,这些链接将指导消费者发现该资源的功能。我最感兴趣的是实现工作流,这是一个分层的、剥洋葱类型的发现对话过程。

最佳答案

在 Rails 中,如果您希望在 JSON 中执行此操作,则需要更改对象序列化的方式。 (您需要覆盖 Rails 回馈资源表示的方式。)这样做最常见的 gem 是:https://github.com/rails-api/active_model_serializers

如果您不想使用 AMS 或想要返回 HTML,请考虑遵循以下演示者模式:http://blog.steveklabnik.com/posts/2012-01-06-implementing-hateoas-with-presenters

关于ruby-on-rails-3 - 如何在 Rails 中实现 HATEOAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com