当前位置: 首页 > 知识库问答 >
问题:

在 Angular 项目中将 Http 迁移到 HttpClient

傅涵忍
2023-03-14

我正在做一个项目,该项目需要迁移旧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类的模块中导入Http客户端模块,然后在服务本身中导入HtpClient,并通过类的构造函数注入它。我还知道行<code>。映射((响应:响应)=

我的主要问题是用什么来代替HttpClient模块中不再支持的RequestOptions对象。我假设我将不得不使用HttpHeaders和/或HttpParams来代替RequestOptions,但是我不确定具体的实现。行<代码>

我将继续研究,并通过留档,试图找到合适的解决方案,但我感谢任何帮助这个特殊的问题。谢谢!

共有1个答案

冯驰
2023-03-14

不再键入选项

只需将RequestOptions替换为任何即可。

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

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>

如您所见,<code>withCredentials</code>仍然可用,并且没有<code>选项的类型

 类似资料:
  • Figure: Great Migration by gekkodigitalmedia licensed under Public Domain ()

  • 问题内容: 由于办公室人员的变动,C#专业知识的水平急剧下降,现在有更多的Java开发人员。至此,高层人士正在考虑将用C#编写的现有.NET项目转移到Java世界中。 除了从头开始完全出现 的明显问题之外,该公司还可以通过哪些可行的方法成功地将项目从.NET C#移植到Java? 问题答案: 这里是要考虑的事情: 这是大项目吗?如果是,请尝试使用C# 这个中型项目是否包含组件?如果否,请尝试使用C

  • 我是Android Studio的新手。需要将一个旧项目迁移到Android Studio 首先,我收到了这个错误: Android插件与Android渐变插件不兼容。请使用“注释处理器”。配置“编译”已过时,已替换为“实现”和“api”。它将于2018年底删除。欲了解更多信息... 然后,当我进行更改并替换我需要的内容时,我收到了这个错误: 键盘|屏幕大小|方向| '与不兼容...

  • 迁移数据库ORM层 迁移模板Blade 迁移分页 迁移验证器 迁移Cache

  • 数据库 模板类 验证器 缓存类