Angular 4 get headers from API response

后端 未结 5 1292
我在风中等你
我在风中等你 2020-12-06 05:50

I\'m sending a request to an API, it returns an array of data, but I don\'t know how to extract the headers from that url, this is what i\'ve tried in my service

<         


        
5条回答
  •  一生所求
    2020-12-06 05:57

    A bit more of an exotic example in Angular 5 shown below. Using HttpClient to post to a GraphQL server, read the response and then extract a response header value and a response body value. The header is Total-Count in this case. cars is a field (array of Car) under another field data in the body. Also shows use of the rxjs first operator.

    import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
    import { first } from 'rxjs/operators/first'; 
    import { Car, CarPage } from '../models/car';  
    ..........
    ..........
    
    public find(filter: string, sort: string, limit: number): Observable {
      let headers = new HttpHeaders().set("Content-Type", "application/graphql");
      let carPage: CarPage = { cars: [], totalCount: 0 };
      return this.http.post>('/graphql',
        `query cars { cars(filter: "${filter}", sort: "${sort}", limit: ${limit}) {
              id
              make
              model
              year 
            }
          }`,
          { headers: headers, observe: "response" }
      )
      .first((_, index) => index === 0, (response: HttpResponse) => {
        let totalCountHeaderValues = response.headers.getAll("Total-Count");
        carPage.totalCount = (totalCountHeaderValues.length > 0) ? parseInt(totalCountHeaderValues[0]) : 0;  
        carPage.cars = response.body.data.cars; 
        return carPage; 
      })
    }
    

提交回复
热议问题