gpt4 book ai didi

angular - 在 Angular 项目中将 Http 迁移到 HttpClient

转载 作者:太空狗 更新时间:2023-10-29 18:30:23 26 4
gpt4 key购买 nike

我正在开展一个项目,该项目需要迁移旧 Http 的所有实例以利用 Angular 提供的新 HttpClient。 异步方法在 DataService 类中声明如下:

@Injectable()
export class DataService {

constructor(private http: Http) { }

async getAsync<T>(resource: string, options?: RequestOptions): Promise<T> {
return this.http
.get(resource, options)
.map((response: Response) => response.json())
.catch(this.handleError).toPromise();
}

并像这样在另一个服务类中使用:

async getUser() {
try {
this.logger.debug('Getting User State...');

const userInfo = await this.dataService.getAsync<[Type Parameter]>(
this.constantService.urls.authenticatedUserUri, <RequestOptions>{ withCredentials: true }
);

this.logger.debug(JSON.stringify(userInfo));
this.authorizeUser(userInfo);
} catch (error) {
this.logger.debug(error);
}
}

我知道,为了使用 HttpClient,我需要在提供 DataService 类的模块中导入 HttpClientModule,然后在服务本身中导入 HttpClient 并通过类的构造函数注入(inject)它。我也知道 .map((response: Response) => response.json() ) 行是不必要的,因为 JSON 现在是默认的响应类型。

我的主要问题是使用什么来代替 HttpClient 模块不再支持的 RequestOptions 对象。我假设我将不得不使用 HttpHeaders 和/或 HttpParams RequestOptions,但我不确定实现。线路<RequestOptions>{ withCredentials: true }也让我失望。

我将继续研究并仔细阅读文档以尝试找到合适的解决方案,但我非常感谢对这个特定问题的任何帮助。谢谢!

最佳答案

不再输入选项

只需将 RequestOptions 替换为 any

在文档中您可以看到以下内容:

request(first: string|HttpRequest<any>, url?: string, options: {
body?: any,
headers?: HttpHeaders|{[header: string]: string | string[]},
observe?: HttpObserve,
params?: HttpParams|{[param: string]: string | string[]},
reportProgress?: boolean,
responseType?: 'arraybuffer'|'blob'|'json'|'text',
withCredentials?: boolean,
} = {}): Observable<any>

如您所见,withCredentials 仍然可用,并且options 没有类型

关于angular - 在 Angular 项目中将 Http 迁移到 HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com