Top 10 JavaScript APIs You Need to Know

Jennie Lee
6 min readMar 31, 2024

--

Looking for a Postman alternative?

Try APIDog, the Most Customizable Postman Alternative, where you can connect to thousands of APIs right now!

Introduction

JavaScript is a versatile programming language that allows developers to create dynamic and interactive web applications. One of the many powerful features of JavaScript is the availability of built-in Web APIs. These APIs provide developers with a wide range of functionalities that can greatly enhance the user experience. In this article, we will explore four essential JavaScript APIs that every web developer should know: the Notification API, Geolocation API, History API, and Barcode Detection API.

The Notification API

The Notification API allows web pages to display notifications to the user, similar to the ones seen on mobile devices or desktop applications. These notifications can provide helpful information, updates, or alerts to the user, even when the web page is not in focus or has been minimized. To use the Notification API, the user must grant permission to the web application to display notifications.

To request permission to display notifications, you can use the Notification.requestPermission() method. This method returns a Promise that resolves with the user’s permission choice. Here is an example:

if (Notification.permission !== 'granted') {
Notification.requestPermission().then(permission => {
if (permission === 'granted') {
// Permission has been granted, you can display notifications
new Notification('Hello, world!');
}
});
} else {
// Permission has already been granted, you can display notifications
new Notification('Hello, world!');
}

Once the user has granted permission, you can create notifications using the Notification constructor. You can customize the notification title, body, icon, and even handle user interactions with the notification. The following example demonstrates how to create a notification with a customized title and body:

if (Notification.permission === 'granted') {
const notification = new Notification('My Web App', {
body: 'New message received!',
icon: 'path/to/notification-icon.png'
});

notification.onclick = function() {
// Handle notification click event here
console.log('Notification clicked!');
};
}

With the Notification API, you can provide your users with valuable updates and alerts, even when they are not actively using your web application.

The Geolocation API

The Geolocation API allows web applications to access the user’s geographic location, with their consent. It provides information about the user’s latitude, longitude, and other location-related data. This API is particularly useful for location-based services, such as finding nearby restaurants, tracking delivery drivers, or providing personalized content based on the user’s location.

To access the Geolocation API, you can use the navigator.geolocation object. Before retrieving the user's location, it is essential to check if the API is available and if the user has granted permission. Here is an example:

if ('geolocation' in navigator) {
navigator.geolocation.getCurrentPosition(position => {
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
console.log(`Latitude: ${latitude}, Longitude: ${longitude}`);
}, error => {
console.log('Error retrieving location:', error);
});
} else {
console.log('Geolocation is not supported in this browser');
}

The getCurrentPosition() method is used to retrieve the user's current position. It accepts a success callback function that receives the Position object, containing the user's location data, and an error callback function that handles any errors that may occur.

Additionally, the Geolocation API provides a watchPosition() method that allows you to continuously monitor the user's position as it changes. This can be useful for real-time location tracking. Here is an example:

const watchId = navigator.geolocation.watchPosition(position => {
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
console.log(`Latitude: ${latitude}, Longitude: ${longitude}`);
}, error => {
console.log('Error retrieving location:', error);
});

// To stop watching the position, use the following code:
// navigator.geolocation.clearWatch(watchId);

By utilizing the Geolocation API, you can create web applications that provide personalized and location-specific experiences.

The History API

The History API allows developers to interact with the browser’s history, enabling them to manipulate the URL and navigate through the user’s browsing history. This API is particularly useful for creating single-page applications or implementing custom navigation controls within a web page.

The History API provides methods such as forward(), back(), and go() to navigate through the user's browsing history. The forward() method moves the user forward by one page, back() moves the user back by one page, and go() can be used to navigate to a specific page in the history. Here is an example:

// Move forward one page
history.forward();

// Move back one page
history.back();

// Move back two pages
history.go(-2);

In addition to navigating through the history, the History API also enables developers to manipulate the URL displayed in the browser’s address bar without causing a full page refresh. This functionality is useful for creating bookmarkable URLs or implementing client-side routing in single-page applications. Here is an example:

// Push a new state to the browser's history
history.pushState({ page: 1 }, 'Page 1', '/page1');

// Replace the current state in the browser's history
history.replaceState({ page: 2 }, 'Page 2', '/page2');

// Listen for the popstate event to handle back and forward navigation
window.addEventListener('popstate', event => {
console.log(`Navigated to page: ${event.state.page}`);
});

By utilizing the History API, you can create seamless and interactive user experiences within your web applications.

The Barcode Detection API

The Barcode Detection API is an experimental API that allows web applications to detect linear and two-dimensional barcodes in images. This API provides a powerful tool for scanning and processing barcodes within a web application, making it particularly useful for e-commerce, inventory management, and ticketing systems.

Before using the Barcode Detection API, it is essential to check if the API is supported by the browser. You can use the barcode property in the MediaCapabilities object to check for API support. Here is an example:

if ('barcode' in navigator.mediaCapabilities) {
navigator.mediaCapabilities.barcode.decode({ barcodeType: 'qr_code' }).then(result => {
console.log('Barcode detected:', result);
}).catch(error => {
console.log('Error detecting barcode:', error);
});
} else {
console.log('Barcode Detection API is not supported in this browser');
}

Once you have determined that the browser supports the Barcode Detection API, you can use the decode() method to create a barcode detector. The decode() method takes an options object as a parameter, which can include properties such as barcodeType to specify the type of barcode to be detected.

To scan a barcode, you need to capture an image using the device camera or by uploading an image file. Here is an example of how to scan a barcode using the decode() method:

const fileInput = document.getElementById('barcode-image');
fileInput.addEventListener('change', async event => {
const file = event.target.files[0];
const imageDataUrl = await readFileAsDataURL(file);

const image = new Image();
image.onload = async () => {
const { width, height } = image;
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');

canvas.width = width;
canvas.height = height;
context.drawImage(image, 0, 0);

const imageData = context.getImageData(0, 0, width, height);
const barcode = await navigator.mediaCapabilities.barcode.decode({ imageBitmap: imageData });

console.log('Barcode detected:', barcode);
};

image.src = imageDataUrl;
});

function readFileAsDataURL(file) {
return new Promise(resolve => {
const reader = new FileReader();
reader.onload = event => {
resolve(event.target.result);
};
reader.readAsDataURL(file);
});
}

In the code above, we first capture an image from the user by using an input element with the type file. When the user selects an image, we convert it to a Data URL using the readFileAsDataURL() helper function.

Then, we create an Image object and load the selected image. After the image has finished loading, we create a canvas element and draw the image onto the canvas. We extract the image data from the canvas using the getImageData() method.

Finally, we pass the image data to the decode() method of the Barcode Detection API to scan the barcode. The decode() method returns a promise that resolves with the detected barcode information.

It’s important to note that the Barcode Detection API is still experimental and may not be supported by all browsers. Therefore, it’s recommended to check for browser support before using this API.

Conclusion

In this article, we have explored four essential JavaScript Web APIs: the Notification API, Geolocation API, History API, and Barcode Detection API. These APIs provide developers with powerful functionalities that can greatly enhance the user experience of web applications.

The Notification API allows developers to display notifications to the user, providing valuable updates and alerts even when the web page is not in focus. The Geolocation API enables developers to access the user’s location, allowing for location-specific and personalized experiences. The History API allows developers to manipulate the browser’s history, enabling custom navigation controls within a web page. Lastly, the Barcode Detection API provides a way to detect barcodes in images, offering new possibilities for e-commerce, inventory management, and ticketing systems.

By familiarizing yourself with these APIs and utilizing them in your web development projects, you can create more interactive, engaging, and functional web applications. So go ahead, dive into the world of JavaScript APIs and unlock the full potential of your web development skills.

Looking for a Postman alternative?

Try APIDog, the Most Customizable Postman Alternative, where you can connect to thousands of APIs right now!

--

--

Jennie Lee
Jennie Lee

Written by Jennie Lee

Software Testing Blogger, #API Testing

No responses yet