在Ember中发送未编码的查询参数

时间:2017-06-03 00:53:33

标签: javascript ember.js ember-query-params

我正在使用只接受未编码查询参数的API。我注意到当我在Ember中进行查询时如此:

this.store.query('listing', {filter: params});

uri在遇到api时被编码:

/v1/listing?filter%5Bcategory%5D=123

我需要的是查询参数无法编码我的API,例如:

/v1/listing?filter[category]=123

任何人都可以告诉我在Ember做正确的方法吗?

1 个答案:

答案 0 :(得分:0)

所以我最终实现的解决方案并不好,但是直到找到更好的方法才能解决问题。

Ember使用Ajax来形成请求,所以我所做的是覆盖'查询'在我的JSONAPIAdapter中传递一组自定义选项。我的查询现在看起来像这样:

query(store, type, query) {
  let url = this.buildURL(type.modelName, null, null, 'query', query);
  if (this.sortQueryParams) {
    query = this.sortQueryParams(query);
  }
  query = decodeURI(Ember.$.param(query));
  let options = {
    "processData": false,
    "data": query
  };
  return this.ajax(url, 'GET', options);
},

关键是要停止ajax自动处理数据对象,并解码jquery' param()'的结果。辅助函数,用于将查询参数对象转换为序列化字符串。

结果是一个解码后的查询参数字符串,如下所示: /v1/listing?filter[category]=123

相关问题