Search code examples
angularangular-httpangular-http-interceptors

res.json() is a not a function in HttpClient Angular 2


I was using Angular Http module before and the method res.json() used to work fine. I have recently tried HttpClient but then the res.json() dosen't seem to work . only using res works can some one tell me what changed has happened in the http client.

return this.client.get('https://swapi.co/api/people/1/')
              .map((res:Response) => {
                 return  res.json(); // using maps to filter data returned form the http call this json dosn't work with http client
              }).map(data => {
                return data; // using maps of maps to filter data returned form the map
        }).flatMap((jedi) => this.http.get(jedi['homeworld'])
          .map(res => {
           return res.json().name; // using flat maps to combine data returned from two observables into one
          }).catch((error:any) => Observable.throw(error.json().error || 'Server error')));

I switched to http client because of the new interceptor can pointers are welcomed thanks


Solution

  • Right, that's because new http client by default calls res.json() implicitly and you don't need to that manually yourself. Here is the quote from commit:

    JSON is an assumed default and no longer needs to be explicitly parsed

    See Difference between HTTP and HTTPClient in angular 4? for more details.