0

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

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

uri 在到达 api 时被编码:

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

我需要的是查询参数以未编码的方式访问我的 API,例如:

/v1/listing?filter[category]=123

谁能指导我在 Ember 中执行此操作的正确方法是什么?

4

1 回答 1

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

于 2017-06-03T01:57:53.060 回答