當我在查詢引數中有一個特殊字符時,URL 正在被編碼,如何在進行 http get 呼叫時防止 url 編碼。
我試過了
export class AppComponent {
codec = new HttpUrlEncodingCodec();
name = 'Angular';
baseUrl = 'https://jsonplaceholder.typicode.com/';
constructor(private http: HttpClient) {
const params = new HttpParams().set(
this.codec.decodeValue('userId[]'),
'1'
);
this.http
.get(this.baseUrl 'posts', { params: params })
.subscribe((data) => {
this.name = this.name.concat(data[0].title);
});
}
}
我試著做,HttpUrlEncodingCodec但它不適合我
但仍然 URL 看起來像:
https://jsonplaceholder.typicode.com/posts?userId[]=1
我希望它看起來像
https://jsonplaceholder.typicode.com/posts?userId[]=1
像 userId[],我有多個查詢引數。如何防止在 Angular 中對查詢引數進行編碼
uj5u.com熱心網友回復:
在專用房間聊天后,您向我解釋了您的需求,這是最終的解決方案,這是您能找到的最簡單的解決方案:
const params = { 'userId[]': [1, 2, 3] };
const paramStr = Object.entries(params)
.map(([key, value]) => `${key}=${value.join(',')}`)
.join('&');
this.http.get('http://www.test.com?' paramStr).subscribe();
作業 stackblitz(打開網路開發工具)
其他解決方案包括重寫編碼器并將其提供給 http 模塊。我不喜歡這樣,當你可以只使用一個襯墊來做同樣的事情時。
uj5u.com熱心網友回復:
export class AppComponent {
codec = new HttpUrlEncodingCodec();
name = 'Angular';
baseUrl = 'https://jsonplaceholder.typicode.com/';
constructor(private http: HttpClient) {
const params = { 'userId[]': 1 };
this.http
.get(this.baseUrl 'posts', { params })
.subscribe((data) => {
this.name = this.name.concat(data[0].title);
});
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510200.html
上一篇:將html頁面加載為Angular打字稿中選項卡的內容
下一篇:環境注入到應用程式內的服務
