【问题标题】:Ember Subdirectory Models vs Adapter Change?Ember 子目录模型与适配器更改?
【发布时间】:2017-08-04 13:22:48
【问题描述】:

我注意到可以使用 ember cli 创建子目录模型。所以我可以做

ember g model log/type1-log

这将创建一个日志目录,其中包含 type1-log 模型。我尝试这样做的原因是我的 API 结构。

/api/v1/logs/
/api/v1/logs/type1-log
/api/v1/logs/type2-log
/api/v1/logs/type3-log

最初,我在做ember g model type1-log,但那个模型正在向/api/v1/type1-log 做api 请求。我希望它在做api/v1/logs/type1-log

Ember 是否支持子目录模型,还是我应该更新我的适配器以修改 URL?

请求日志不是我的 api 将来会做的唯一事情,所以我不想在适配器中将命名空间设置为 /api/v1/logs

【问题讨论】:

    标签: ember.js ember-data ember-cli


    【解决方案1】:

    您可以使用适配器自定义端点自定义。所以在您的情况下,我会说,您可以创建特定于模型的适配器并使用 namespace 属性对其进行自定义。

    ember g adapter type1-log
    

    import DS from 'ember-data';
    export default DS.JSONAPIAdapter.extend({
      namespace: 'api/v1/logs'
    });
    

    来自 ember 指南,

    如果您有一个模型与其他模型相比具有与后端通信的特殊规则,您可以通过运行命令 ember generate adapter adapter-name 创建一个特定于模型的适配器。例如,运行ember generate adapter post 将创建app/adapters/post.js 文件。

    参考:
    https://guides.emberjs.com/v2.14.0/models/customizing-adapters/ https://emberjs.com/api/ember-data/2.14/classes/DS.JSONAPIAdapter

    【讨论】:

    • 这将强制我的 API 始终转到未使用的 api/v1/logs。我将进一步澄清这个问题。
    • Adapter 负责为 ember-data 提供 URL。这是具有命名空间自定义方法的特定于模型的适配器,恕我直言。如果您想控制 URL 生成,则需要从适配器重写特定方法,用于 urlForRequest 或任何其他适合您的方法。
    • 那么我应该为每个模型都有一个适配器......?每个都有自己的自定义命名空间?
    • 是的。这就是我们可以在 ember-data 中自定义它的方式。在本指南页面中,他们解释了模型特定的适配器概念。 guides.emberjs.com/v2.14.0/models/customizing-adapters
    • ember slack 社区有 ember-data 频道,您可以在其中捕捉到正在工作 ember-data 的核心人员。您可以从ember-community-slackin.herokuapp.com 获得邀请..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多