3

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

2 Answers 2

9

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.

Sign up to request clarification or add additional context in comments.

2 Comments

ohh thats whats chabged thanks. So it always better now to use httpclien instead of http right?
@INFOSYS, yes, I believe so. It has many advantages. Check the answer I linked.
0

As HttpClient itself adds res.json(), which means it implicitly calls this function due to which, it is worthless to call it explicitly or manually. So there is no need to add this function. Hope this works, thanx...

2 Comments

Please highlight the additional insight of your answer as compared to the existing, accepted and upvoted one.
Dear Yunnosch, there is nothing much to add into it, its that simple. I think the only pertinent factor in this answer is not to use .json() as it works automatically with HttpClient over simple http request.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.