在 Ember 中发送未编码的查询参数
Send unencoded query parameters in Ember
我正在使用只接受未编码查询参数的 API。我注意到当我像这样在 Ember 中进行查询时:
this.store.query('listing', {filter: params});
uri 在到达 api:
时被编码
/v1/listing?filter%5Bcategory%5D=123
我需要的是查询参数到达我的 API 未编码,例如:
/v1/listing?filter[category]=123
任何人都可以指导我在 Ember 中执行此操作的正确方法吗?
所以我最终实施的解决方案不是很好,但在我找到更好的方法之前它起到了作用。
Ember 使用 Ajax 形成请求,所以我所做的是在我的 JSONAPIAdapter 中覆盖 'query' 以传递一组自定义选项。我的查询现在看起来像这样:
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
我正在使用只接受未编码查询参数的 API。我注意到当我像这样在 Ember 中进行查询时:
this.store.query('listing', {filter: params});
uri 在到达 api:
时被编码/v1/listing?filter%5Bcategory%5D=123
我需要的是查询参数到达我的 API 未编码,例如:
/v1/listing?filter[category]=123
任何人都可以指导我在 Ember 中执行此操作的正确方法吗?
所以我最终实施的解决方案不是很好,但在我找到更好的方法之前它起到了作用。
Ember 使用 Ajax 形成请求,所以我所做的是在我的 JSONAPIAdapter 中覆盖 'query' 以传递一组自定义选项。我的查询现在看起来像这样:
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