使用嵌套接口

时间:2018-01-18 12:49:41

标签: angular angular5 angular-httpclient

我想知道HttpClient是否可以输入检查嵌套接口。

例如我使用github api。如果您检查此请求: https://api.github.com/search/repositories?q=angular  回复你会发现实际的发现是在一个数组中('items')。

所以我想提取 items 数组,并且还想存储 total_count

我提出了这个界面:

export interface Repository {
    name: string;
    full_name: string;
    size: string;
    forks_count: string;
    created_at: string;
    url: string;
    description: string;
    stargazers_count: string;
    open_issues_count: string;
}

和...

import { Repository } from "./repository.model";

export interface ReposirotySearchResponse {
    items: Repository[];
    total_count: number;
}

基于 ReposirotySearchResponse 我想用这个提取上述回复:

return this._http.get<ReposirotySearchResponse>('https://api.github.com/search/repositories?q=angular');

但遗憾的是,angular不能解析给定类型的响应。

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

Duncan,http.get为您提供完整的回复,因此如果您想获得其他回复,您必须“映射”回复

return this._http.get<ReposirotySearchResponse>('https://api.github.com/search/repositories?q=angular')
    .map((result:any)=>{
      console.log(result); //<--there the complete response
        return{
          total_count:result.total_count,
          items:result.items.map((item:any)=>{
            return {
              name: item.name,
              full_name: item.full_name,
              size: item.size,
              forks_count: item.forks_count,
              created_at: item.created_at,
              url: item.url,
              description: item.description,
              stargazers_count: item.stargazers_count,
              open_issues_count: item.open_issues_count
            }
          })
        }
      })

当你订阅时,你只收到你想要的fiels