防止Ember附加到RESTAdapter URL的末尾?

时间:2014-12-22 19:55:28

标签: ember.js

我使用的API在最后没有任何/post或任何内容。

但是Ember会自动添加内容到我的网址末尾。这是代码:

    App.Store = DS.Store.extend({
        revision: 12,
        adapter: DS.RESTAdapter.create({
            url: 'http://api.my-api.com/v1/products(name=my-name)&show=sku,name&Key=mYaPiKeY123'
        })
    });

    App.Offer = DS.Model.extend({
        name: DS.attr('string'),
        sku: DS.attr('string')
    });

    App.ApplicationRoute = Ember.Route.extend({
        model: function () {
            return App.Offer.find();
        }
    });

Ember将/offers添加到url的末尾,当然我得到了404。

1 个答案:

答案 0 :(得分:1)

适配器的网址专门用于API的基本网址,例如: http://api.my-api.com/v1/。所有资源端点URL都将从您要求的模型中推断出来。例如,在使用App.Offer.find()时,它从RESTAdapter的假定约定中推断出资源位于http://api.my-api.com/v1/offers。如果您需要构建自定义网址和/或您无法控制API的网址方案,则可以创建自己的RESTAdapter(或只是常规适配器)来处理自定义网址。

如果您希望Ember Data在请求资源时使用查询参数,只需使用类似this.store.findQuery('offer', {show: 'sku,name', another: 'parameter'});的内容,它就会自动将它们转义/序列化到您的URL中。

在另一主题上,将您的API密钥包含在您的网址中并不是一个好主意,因为他们非常容易受到曝光: - )