使用Angular 7,如何调用wikipedia api并将结果返回到模型中?

问题描述 投票:0回答:1

我试图使用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的问题。

angular typescript wikipedia-api
1个回答
0
投票

就像你拥有它一样,我尝试了它(没有未知的数据类型)。它没有问题。也许你试图在异步调用之外检查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;
}
© www.soinside.com 2019 - 2024. All rights reserved.