【发布时间】:2019-07-15 22:21:10
【问题描述】:
Angular 的 Http 模块曾经有一个 RequestOptions 对象,该对象可以传递给它的 get 方法(例如 this.http.get(fooUrl, barOptions)。RequestOptions 包含任何标题。这是 deprecated。“最接近的替换" 对于已弃用的 RequestOptions 是 HttpRequest。
这有两个问题:
1. HttpRequest 有一个url 参数,所以它不等同于RequestOptions。实际上,它似乎封装了整个请求,但我没有看到它在任何地方使用,所以我猜测它只是一个内部类..
2.HttpClient的get方法不接受HttpRequest作为参数。
HttpClient 的get 方法的源代码如下所示:
/**
* Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns the response in
* an `ArrayBuffer`.
*
* @param url The endpoint URL.
* @param options The HTTP options to send with the request.
*
* @return An `Observable` of the response, with the response body as an `ArrayBuffer`.
*/
get(url: string, options: {
headers?: HttpHeaders | {
[header: string]: string | string[];
};
observe?: 'body';
params?: HttpParams | {
[param: string]: string | string[];
};
reportProgress?: boolean;
responseType: 'arraybuffer';
withCredentials?: boolean;
}): Observable<ArrayBuffer>;
现在有什么类型可以用于options 参数吗?我应该只定义一个上面有HttpHeaders 的接口吗?如果没有它的类型,为什么不呢?
我的旧代码如下所示:
reqOptions.headers.set('Authorization', user.token);
reqOptions.headers.set('RefreshToken', user.refreshToken);
来自旧 Http 模块的RequestOptions 具有 headers 属性并且是静态类型的。
附:我在这里阅读了答案,但它不使用类型: Angular4: Http -> HttpClient - requestOptions
【问题讨论】:
-
您使用/来自哪个版本的 Angular?
-
从 7 到 8。我认为这可能适用于从 4 左右更新 iirc 的任何人。我们只是从未全面应用
HttpClient。
标签: angular typescript angular-httpclient