不能使用HttpRequest 作为http客户端请求中的选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不能使用HttpRequest 作为http客户端请求中的选项相关的知识,希望对你有一定的参考价值。

我尝试将我的角度项目从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类型的位置,代码应该编译没有问题。

以上是关于不能使用HttpRequest 作为http客户端请求中的选项的主要内容,如果未能解决你的问题,请参考以下文章

同构 JS - 仅限 httpRequest 客户端

HttpRequest 和HttpWebRequest的区别

通过HttpRequest获取请求用户真实IP地址

使用 HttpRequest 作为 payload_type 时,Google Cloud Tasks 始终将 HttpMethod 设置为 GET

如何使用HttpRequest对象

Session和Cookie的区别