【问题标题】:Adapting Sutto's RocketPants REST api with Ember.js使用 Ember.js 适配 Sutto 的 RocketPants REST api
【发布时间】:2014-08-12 16:46:59
【问题描述】:

Ember.js 期望 json 响应包含模型对象 json的根。 RocketPants 在属性上对其模型进行编码 用对象调用响应作为它的值。还返回了元数据 来自 RocketPants 位于响应对象旁边的根中,而 Ember 期望所有元数据都驻留在一个名为 meta 的对象中。因此 RocketPants 返回的任何元数据都将被解析为一个对象 Ember 中会出现错误。它还将尝试解析响应 对象作为响应模型。

所以目前我正在尝试决定是否更改发回的 json 从后端或在 ember 端编写适配器。写一个 适配器是理想的方法,但我不知道它有多容易 完成这项工作,目前正在研究它。

如果我决定更改后端,我想保留 RocketPants 以进行错误处理 并且只是发回我的自定义 json 但随后可能会出现同样的问题,因为返回的 json 使用错误对象,并且 Ember 可能会尝试将其解析为对象,除非它考虑到状态代码并且它理解这是一个错误。

有人对这个话题有任何煽动吗?

【问题讨论】:

    标签: json ruby-on-rails-4 ember.js ember-data rocketpants


    【解决方案1】:

    如果根键中只有一种类型的记录,您可以使用 JSONSerializer 并覆盖 normalizePayload (https://github.com/emberjs/data/blob/master/packages/ember-data/lib/serializers/json_serializer.js#L190) 将记录从 response 键移动到顶层。

    您可以覆盖extractMeta (https://github.com/emberjs/data/blob/master/packages/ember-data/lib/serializers/json_serializer.js#L947) 以将元数据移动到meta 键并调用this._super(store, type, payload) 或自己提取元数据。

    【讨论】:

    • 问题是 Ember 期望 json 被命名。例如,一个或多个用户需要代替响应,根据返回的 json 进行复数。因此,如果不编写适配器,这是行不通的。我决定我不需要 Rocketpants,在查看并尝试了 rails-api 和活动模型序列化程序之后,我认为它更适合与 ember 一起使用,并且总体上更灵活。训练轮需要脱落。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    相关资源
    最近更新 更多