2017-06-03 24 views
0

我正在使用只接受未編碼查詢參數的API。我注意到,當我做一個查詢的灰燼像這樣:在Ember中發送未編碼的查詢參數

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

當它擊中的API的URI編碼:

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

我需要的是查詢參數讓我的API未編碼,如:

/v1/listing?filter[category]=123

誰能給我指導什麼是在Ember中做到這一點的正確方法?

回答

0

因此,我最終實施的解決方案並不是很好,但它找到了一個更好的方法。

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); 
}, 

的關鍵是停止阿賈克斯的數據對象的自動處理,以及用於查詢的參數對象轉換jQuery的「參數()」輔助函數,結果解碼成串行化的字符串。

結果是一個解碼查詢參數字符串像這樣: /v1/listing?filter[category]=123