【问题标题】:Ember Data RESTAdapter: are matrix parameters possible?Ember Data RESTAdapter:矩阵参数可能吗?
【发布时间】:2015-06-12 05:26:17
【问题描述】:
从我的 Ember 应用程序中,我必须调用一些 REST API,它仅支持 URL 中的矩阵参数(用“;”分隔),不支持更经典的查询参数(用“?”和“&”分隔)。
我使用 Ember Data 1.0.0-beta.15。
默认情况下,当我调用 store.find() 时,会使用查询参数构建请求 URL。是否有任何配置方法来指示 RESTAdapter(我相信这是我的情况下要配置的组件)应用矩阵参数?
谢谢!
安德烈
【问题讨论】:
标签:
rest
ember.js
ember-data
【解决方案1】:
最后我的决定是重写 findQuery() 方法如下:
export default DS.RESTAdapter.extend({
findQuery: function(store, type, query) {
if (query.matrix) {
var url = this.buildURL(type.typeKey);
Object.keys(query).forEach(function(queryParamName) {
if (queryParamName.toString() !== 'matrix') {
url += ';' + queryParamName + '=' + query[queryParamName];
}
});
return this.ajax(url, 'GET', { data: {} }); //originally was '{ data: query }'
} else {
return this._super(store, type, query);
}
}
}
我介绍了一个专用的“矩阵”查询参数,它是可选的,可以通过路由设置,它表示需要带有矩阵参数的 URL。正如您在上面看到的,'matrix' 查询参数被 findQuery() 方法拦截,并且不会发送到服务器。