我有一个使用 Http 的工作代码,我想了解如何将其转换为使用最新的 HttpClient。
我已完成以下步骤:
- 在 App.module.ts 中:从“@angular/common/http”导入 { HttpClientModule };
- 将 HttpClientModule 添加到导入数组中
- 在下面的服务文件中(见下文): import { HttpClient } from "@angular/common/http";
- 在构造函数中注入 HttpClient 而不是 Http(将 Http 替换为 HttpClient.
现在,我无法正确执行以下步骤(如何重写return this.http.get(queryUrl)..
)
有任何想法吗?
...
使用Http工作的代码:
import { Injectable, Inject } from "@angular/core";
import { Http, Response } from "@angular/http";
import { Observable } from "rxjs/Observable";
import { SearchResult } from "../models/search-results.model";
export const YOUTUBE_API_KEY = "AIzaSyCIYsOjnkrIjZhVCFwqNJxe1QswhsliciQ";
export const YOUTUBE_API_URL = "https://www.googleapis.com/youtube/v3/search";
@Injectable()
export class YoutubeSearchService {
constructor(
private http: Http,
@Inject(YOUTUBE_API_KEY) private apiKey: string,
@Inject(YOUTUBE_API_URL) private apiUrl: string,
) {}
search(query: string): Observable<SearchResult[]> {
const params: string = [
`q=${query}`,
`key=${this.apiKey}`,
`part=snippet`,
`type=video`,
`maxResults=10`,
].join("&");
const queryUrl = `${this.apiUrl}?${params}`;
return this.http.get(queryUrl).map((response: Response) => {
return (<any>response.json()).items.map(item => {
// console.log("raw item", item); // uncomment if you want to debug
return new SearchResult({
id: item.id.videoId,
title: item.snippet.title,
description: item.snippet.description,
thumbnailUrl: item.snippet.thumbnails.high.url,
});
});
});
}
}
这是更新的代码