我试图使用Angular 7访问Wikipedia API,结果仍然是null。
当从维基百科API站点运行时,使用以下内容:https://en.wikipedia.org/api/rest_v1/page/summary/Addax?redirect=true我得到格式正确的JSON字符串的结果。
从我的应用程序运行相同的查询时,响应正文为空。
这是请求:
export class WikirestService {
constructor( private http: HttpClient) { }
getWiki(title: string) {
const tempTitle = title.replace(' ', '_') + '?redirect=true';
const baseUrl = 'https://en.wikipedia.org/api/rest_v1/page/summary/';
return this.http.get<WikiSummary>(baseUrl+tempTitle);
}
}
而WikiSummary模型是:
export class WikiSummary {
type?: string;
title?: string;
displaytitle?: string;
namespace?: Namespace;
wikibase_item?: string;
titles?: Titles;
pageid?: number;
thumbnail?: Originalimage;
originalimage?: Originalimage;
lang?: string;
dir?: string;
revision?: string;
tid?: string;
timestamp?: Date;
description?: string;
content_urls?: ContentUrls;
api_urls?: APIUrls;
extract?: string;
extract_html?: string;
}
我希望模型可以填充,但它始终为null。即使我记录结果,它们也是空的。从组件调用:
this.wikiRest.getWiki(this.title).subscribe(data => { temp = data; });
我花了几个小时努力解决这个问题,并且真的可以使用一些指导。这是我第一次遇到调用外部API的问题。
就像你拥有它一样,我尝试了它(没有未知的数据类型)。它没有问题。也许你试图在异步调用之外检查temp的值???数据的价值仅适用于结果(没有任何特殊操作)
this.wikiRest.getWiki('Addax').subscribe(data => {
console.log(data.description);
}, err => { console.log('something went wrong' + err)
});
getWiki(title: string) {
const tempTitle = title.replace(' ', '_') + '?redirect=true';
const baseUrl = 'https://en.wikipedia.org/api/rest_v1/page/summary/';
return this.http.get<WikiSummary>(baseUrl+tempTitle);
}
export class WikiSummary {
type?: string;
title?: string;
displaytitle?: string;
// namespace?: Namespace;
wikibase_item?: string;
//titles?: Titles;
pageid?: number;
//thumbnail?: Originalimage;
// originalimage?: Originalimage;
lang?: string;
dir?: string;
revision?: string;
tid?: string;
timestamp?: Date;
description?: string;
//content_urls?: ContentUrls;
//api_urls?: APIUrls;
extract?: string;
extract_html?: string;
}