在Angular 12中返回编码的GET请求时,应该确保HTTP Client在设置请求参数时将options参数的paramsEncoding设置为'encodeURIComponent',以正确编码参数。这样可以解决在后端中解码请求参数时出现乱码的问题。
示例代码如下:
import { HttpClientModule, HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
const httpParams = new HttpParams({encoder: new CustomURLEncoder()});
const options = { params: httpParams, paramsEncoding: 'encodeURIComponent' };
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.get('https://example.com/api/getData', options).subscribe((data) => {
console.log(data);
});
class CustomURLEncoder implements HttpParameterCodec {
encodeKey(key: string): string {
return encodeURIComponent(key);
}
encodeValue(value: string): string {
return encodeURIComponent(value);
}
decodeKey(key: string): string {
return decodeURIComponent(key);
}
decodeValue(value: string): string {
return decodeURIComponent(value);
}
}