我尝试将我的角度项目从HttpModule迁移到HttpClientModule,但是我对头请求有问题,所以我多次想到我明白这里发生了什么。所以我现在要做的就是一次一点地移动到HttpClient,这意味着我没有使用HttpInterceptor,我尝试使用HttpModule中的想法,我们可以在http请求中使用RequestOptions(this.http.get(url, requestOptions)
)。根据我读到的关于HttpInterceptor的内容,我想我可以在http客户端请求中使用HttpRequest作为我的选项。这就是我构建方法的方法。
get(url:string, options: HttpRequest<any>): Observable<HttpRequest<any>> {
return this.httpClient.get(url, this.getHeader(options));
}
getHeader(options: HttpRequests<any>): HttpRequests<any> {
let headers = new HttpHeaders();
if(options && options.headers && option.headers instanceOf HttpHeaders) {
headers = options.headers;
}
headers.append('authorization': 'abc');
let params: new HttpParams().set('id', this.id);
let headerOptions = {
params: params,
headers: headers,
withCredential: true,
}
Object.keys(options).forEach(key => {
if ( !(key===params && key===headers && key===withCredential) ) {
headersOption[key] = options[key];
}
});
return headersOption as HttpRequest;
}
在visual studio代码中,它抱怨标题类型与传递参数不同。那么我可以通过其他方式将这些参数放入我的标头请求中吗?
HttpClient#get
函数不允许HttpRequest
作为其中一个参数。
虽然这些选项确实与HttpRequest
共享大部分相同的属性,但它们不能互换使用。
如果你删除你添加HttpParams
类型的位置,代码应该编译没有问题。