私が取り組んでいるこのプロジェクトがあります。 角度4を使用してGoogleブックAPIから書籍を取得することです'レスポンス'タイプの引数は 'string'タイプのパラメータに割り当てられません
JSONレスポンスの読み方を理解するのに苦労していますが、私はまだAngularを学んでいます。私がやっている場合 私はこの行のために、次のエラー
Argument of type 'Response' is not assignable to parameter of type 'string'.
を取得していますインターネットを検索し、GitHubの にgoogle bookstore
を、このソースコードを発見した
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;
}
);
}以下
は
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
ありがとうエスタス、それは私のために働いた、私は1つだけのパラメータがあるが、私はより多くの場合、それは問題です。 – OceanWavez
これは、別の場所に正しいコードがあるので動作します。 'params:new HttpParams()。set( 'q'、searchparam)' – estus