我有這個項目正在處理中。 這個想法是從谷歌書API檢索書籍,使用角度4「響應」類型的參數不能分配給'string'類型的參數
我很努力去理解如何閱讀JSON響應,我仍然在學習Angular。 我搜索互聯網,發現這個源代碼在GitHub上 google bookstore
我收到以下錯誤
Argument of type 'Response' is not assignable to parameter of type 'string'.
此行
let bookResponse = JSON.parse(body);
我不知道如果我做它是正確的方式。 感謝您的幫助
下面是我發送HTTP請求的方法。
getBooks(searchparam: any){
let par = new HttpParams();
par.set('q', searchparam);
return this.httpClient.get('https://www.googleapis.com/books/v1/volumes', {
params : new HttpParams().set('q',searchparam)
}).map(
(response: Response) => {
let data = response;
return data;
}
);
}
下面是獲得來自HTTP請求數據和讀取JSON響應
getBook() {
const dataArrya = this.searchForm.get('param').value;
console.log(dataArrya);
this.requestService.getBooks(dataArrya)
.subscribe(
response => {
this.printData(response)
// console.log(this.bookData);
},
(error) => console.log(error)
);
}
private printData(res: Response) {
let body = res;
let books: Array<Book> = new Array<Book>();
let bookResponse = JSON.parse(body);
console.log(bookResponse);
console.dir(bookResponse);
for (let book of bookResponse.items) {
books.push({
title:book.volumeInfo.title,
subTitle: book.volumeInfo.subTitle,
categories: book.volumeInfo.categories,
authors: book.volumeInfo.authors,
rating: book.volumeInfo.rating,
pageCount: book.volumeInfo.pageCount,
image: book.volumeInfo.imageLinks === undefined ? '' : book.volumeInfo.imageLinks.thumbnail,
description: book.volumeInfo.description,
isbn: book.volumeInfo.industryIdentifiers,
previewLink: book.volumeInfo.previewLink
});
}
}
順便說一句,上面的代碼有錯誤。 HttpParams實例是不可變的,'.set'應該被鏈接https://stackoverflow.com/questions/45210406/angular-4-3-httpclient-set-params。這個par.set('q',searchparam)'不起作用。 – estus
感謝Estus,它爲我工作,因爲我只有一個參數,但如果我有更多,那麼這是一個問題。 – OceanWavez
它適用,因爲你在另一個地方有正確的代碼,'params:new HttpParams()。set('q',searchparam)' – estus