Working with APIs in JavaScript: Fetch API and XMLHttpRequest

Posted on: April 23rd, 2024
By: Tadeo Martinez

Welcome to the exciting world of JavaScript and APIs! If you’re a web developer looking to enhance your projects with dynamic data from external sources, you’ve come to the right place. In this article, we will explore two powerful techniques for working with APIs in JavaScript: the Fetch API and XMLHttpRequest.

JavaScript is a versatile programming language widely used for creating interactive web applications. With APIs, you can retrieve data or connect with third-party services, allowing your web apps to access a wealth of information. The Fetch API and XMLHttpRequest are two popular methods that provide seamless integration with APIs.

The Fetch API is a modern, efficient way to handle network requests in JavaScript. It simplifies the process of making asynchronous requests and provides a straightforward syntax for retrieving data from APIs. Alternatively, XMLHttpRequest is a traditional technique that’s still widely used and offers extensive functionality for handling API requests.


Integrating APIs with Fetch API

In this section, we will explore how to seamlessly integrate APIs into your JavaScript projects using the Fetch API. The Fetch API is a modern and powerful tool that allows you to make asynchronous requests to APIs and retrieve data in a straightforward manner.

Syntax for Making GET Requests

The Fetch API provides a simple syntax for making GET requests. You can use the fetch() function and pass the URL of the API endpoint as a parameter. This will return a promise that resolves to the response from the server.

Note: The Fetch API uses promises, which allow you to handle asynchronous operations more effectively in JavaScript.

Syntax for Making POST Requests

If you need to send data to the API, you can use the fetch() function with an additional method option set to “POST”. This allows you to send data in the request body, which is useful for creating or updating resources on the server.

Handling JSON Data

The Fetch API automatically parses the response as JSON if the response headers specify the “Content-Type” as “application/json”. This means you can easily work with JSON data by calling the json() method on the response object. This method returns a promise that resolves to the parsed JSON data.

Handling Errors

When working with APIs, it’s important to handle errors gracefully. The Fetch API provides a built-in mechanism for detecting and handling errors. You can use the ok property of the response object to check if the request was successful. If the response is not successful, you can use the status and statusText properties to get more information about the error.

Making Requests with Headers

The Fetch API allows you to specify custom headers for your requests. You can use the Headers constructor to create a new headers object and pass it as an option when making the fetch request. This is useful for adding authentication tokens or specifying the content type of the request.

Working with Query Parameters

When making GET requests, you can include query parameters in the URL to filter or sort the data returned by the API. The Fetch API provides a convenient way to construct the URL with query parameters using the URLSearchParams constructor. You can pass an object with the parameters and values to the constructor, and then append it to the URL using the search property.

Fetch API vs. XMLHttpRequest

Fetch APIXMLHttpRequest
Modern and easy-to-useLegacy, but still widely supported
Built-in support for JSON parsingRequires manual parsing of responses
Uses promises for asynchronous handlingUses event listeners and callbacks
Works well with modern JavaScript syntaxMay require polyfills for older browsers

Utilizing XMLHttpRequest for API Integration

In this section, we will explore the XMLHttpRequest technique for integrating APIs in JavaScript. The XMLHttpRequest object is a powerful tool that allows you to make HTTP requests from your web page without having to reload the entire page.

To get started, you need to create an XMLHttpRequest object. This can be done by instantiating the XMLHttpRequest class:

var xhr = new XMLHttpRequest();

Once you have created the XMLHttpRequest object, you can use it to make both synchronous and asynchronous requests to APIs. Synchronous requests block the execution of your code until the response is received, while asynchronous requests allow your code to continue executing while waiting for the response.

To make a request, you need to specify the HTTP method (GET, POST, PUT, DELETE, etc.) and the URL of the API endpoint. Here’s an example of making a GET request:'GET', '', true);


After making the request, you can use event listeners to handle the response. The onreadystatechange event fires whenever the XMLHttpRequest object’s readyState property changes. You can check the status property to see if the request was successful:

xhr.onreadystatechange = function() {

  if (xhr.readyState === 4 && xhr.status === 200) {

    // Handle successful response



In case of errors, you can handle them using the onerror event:

xhr.onerror = function() { // Handle error };

Sending data via POST requests is also possible with the XMLHttpRequest object. You can set the request headers, specify the data to send, and handle the response accordingly.

When working with APIs, it’s important to understand different response formats. APIs often provide data in formats like JSON, XML, or plain text. You can use JavaScript methods to parse and extract the required information from the response.

By leveraging the XMLHttpRequest technique, you can integrate external APIs seamlessly into your JavaScript projects and unlock a world of possibilities for data retrieval and manipulation.

Harnessing JavaScript’s Fetch API and XMLHttpRequest for Dynamic Web Apps

Working with APIs in JavaScript using the Fetch API and XMLHttpRequest techniques opens up a world of possibilities for enhancing your web apps with external data. These powerful tools allow you to seamlessly integrate and retrieve information from various sources, making your projects more dynamic and interactive.

With JavaScript’s versatile nature and the ease of implementing APIs, you have the ability to tailor your apps to meet specific user needs. Whether you’re fetching data from a weather API to display real-time forecasts or accessing a social media API to integrate social sharing functionality, the possibilities are endless.

The Fetch API offers a modern and streamlined approach to making asynchronous requests, providing a simple and intuitive syntax. Its compatibility with modern browsers makes it an excellent choice for developers looking for a straightforward solution.

On the other hand, the XMLHttpRequest technique, though older, remains a reliable method for integrating APIs. Its flexibility allows for more advanced features and customization options, making it a suitable choice for projects that require more fine-grained control over the request process.


How does the Fetch API work in JavaScript?

The Fetch API is a modern JavaScript feature that allows you to make asynchronous requests to APIs. It provides a simple and concise syntax for sending HTTP requests and handling responses. With the Fetch API, you can make GET and POST requests, handle JSON data, and manage errors efficiently.

What are the advantages of using the Fetch API?

The Fetch API offers several advantages for integrating APIs in JavaScript. It provides a more modern and flexible alternative to the traditional XMLHttpRequest technique. The Fetch API supports promises, making it easier to handle asynchronous requests and responses. Additionally, it allows you to work with headers, query parameters, and different response formats effortlessly.

How can I make GET requests using the Fetch API?

To make a GET request with the Fetch API, you can use the fetch() function and pass the URL of the API endpoint as a parameter. The fetch() function returns a Promise that resolves to a Response object, which you can process using the .then() method. You can extract the data from the Response object using methods like .json() or .text().

How do I handle errors when using the Fetch API?

When making requests with the Fetch API, you can handle errors using the .catch() method after the .then() method. If the request fails (e.g., due to network issues or server errors), the .catch() block will be executed. You can display error messages or handle the errors accordingly to ensure a smooth user experience.

Can I send POST requests using the Fetch API?

Yes, the Fetch API allows you to send POST requests to APIs. When making a POST request, you need to specify the method as ‘POST’ in the fetch() function and provide the necessary data in the body of the request. You can pass parameters using objects or FormData to send data to the API endpoint.

What is XMLHttpRequest in JavaScript?

XMLHttpRequest is an older technique for making asynchronous requests to APIs in JavaScript. It provides similar functionality to the Fetch API but has a different syntax. XMLHttpRequest allows you to create an XMLHttpRequest object, set the request method, specify the URL, and handle responses using event listeners.

How do I create an XMLHttpRequest object?

To create an XMLHttpRequest object, you can use the constructor syntax: `var xhr = new XMLHttpRequest();`. This creates a new instance of the XMLHttpRequest class that you can use to send requests and handle responses from APIs in JavaScript.

How can I make asynchronous requests with XMLHttpRequest?

By default, XMLHttpRequest makes asynchronous requests. You can send a request to an API endpoint using the `.open()` method, specify the HTTP method (e.g., GET, POST), pass the URL, and set the `async` parameter to `true`. This allows the request to be made asynchronously, ensuring that it doesn’t block the execution of other JavaScript code.

How do I handle responses with XMLHttpRequest?

To handle responses with XMLHttpRequest, you can use event listeners such as `onload`, `onprogress`, `onerror`, and `onreadystatechange`. The `onload` event is triggered when the request completes successfully, allowing you to access the response data using the `.response` property. Other events like `onprogress` and `onerror` help you track the progress of the request and handle potential errors.

¿Habla español? Lea Trabajando con APIs en JavaScript: Fetch API y XMLHttpRequest.

Have any questions or comments? Write them below!

Leave a Reply

Your email address will not be published. Required fields are marked *