The goal in the previous section was not to understand how HTTP works, or what exactly the arguments, error, response, and body are the goal was to come up with a real-world example of a callback, as opposed to the contrived examples that we've been using so far with setTimeout:
const request = require('request');
request({
url: 'https://maps.googleapis.com/maps/api/geocode/json?address=1301%20lombard%20street%20philadelphia',
json: true
}, (error, response, body) => {
console.log(JSON.stringify(body, undefined, 2));
});
In the preceding case, we had a real callback that got fired once the HTTP request came back from the Google servers. We were able to print the body, and we saw exactly what we had in the website. In this section, we'll dive into these arguments, so let's kick things off by taking a look at the body argument. This is the third argument that request passes to the callback.
Now the body is not something unique to the request module (body is part of HTTP, which stands for the Hypertext Transfer Protocol). When you make a request to a website, the data that comes back is the body of the request. We've actually used the body about a million times in our life. Every single time we request a URL in the browser, what we get rendered inside the screen is the body.
In the case of https://www.npmjs.com, the body that comes back is an HTML web page that the browser knows how to render. The body could also be some JSON information, which is the case in our Google API request. Either way, the body is the core data that comes back from the server. In our case, the body stores all of the location information we need, and we'll be using that information to pull out the formatted address, the latitude, and the longitude in this section.