我有一个使用Http的工作代码,我想学习如何将其转换为使用最新的HttpClient。
我已经完成了以下步骤:
- 在App.module.ts中:导入{ HttpClientModule } from "@angular/common/http";
- 将HttpClientModule添加到imports数组中
- 在以下服务文件(见下文)中:导入{ HttpClient } from "@angular/common/http";
- 在构造函数中注入HttpClient而不是Http(用HttpClient替换Http)。
现在,以下步骤我无法正确操作(如何重写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,
});
});
});
}
}
这里是更新后的代码。
response.json()
。我建议阅读文档(https://angular.io/guide/http)。它应该包含您所需的一切。 - LLai