5 Web API's for your Next Project

Search for a command to run...

Great article, thanks for!
Nice Article Hrithwik. I am new to web dev and was exploring new stuff. Bookmarking this
An amazing list of Web APIs, Hrithwik Bharadwaj. I will definitely use one of them on my next project.
Thank you Edidiong . Can't wait to see your next project
Thank you Yezni
Linux Commands are like GTA Cheatcodes. People with great memory remember them by heart and weaker ones write them down. I am a hybrid, I used to remember most of the linux commands and GTA Cheatcodes but I don't have them byheart anymore Here is why...

Job-Stash is an alternative to node-schedule that persists job, supports atomic execution and has inbuilt retry mechanism

Here is how I wrote this blog post. I remembered things I contributed last year. made them into points and started expanding on how anyone can implement/learn that. Then realised the blog post is getting long :) Anyways, Hey everyone, I am Hrithwik, ...

I spent the last week improving the performance of a few APIs at work and improved response Times by 5X. I just did 3 basic things which improved performance in most of the API routes. This blog is really helpful especially if you are new to Javascri...

A few days back, I uninstalled the Twitter app and switched to the web app and I noticed something, Twitter had like a different/modern Installation UI for its PWA. (Know more about PWAs here.) I was like, Woah, this looks so dope and better than t...

There are a few amazing web API's supported by modern browsers and these are few you might want to use in your next project.
Do note that some browsers might not support all these API's
Implementing clipboard functionality is even simpler now with the clipboard API.
Using Clipboard API ,You can either Copy or Paste from your Clipboard
Here is how to copy
const text = "Some Information"
if (!navigator.clipboard) {
// Clipboard API not available
return
}
try {
await navigator.clipboard.writeText(text)
// copies to clipboard
} catch (err) {
console.error('Failed to copy!', err)
}
Here is how to Paste from the user's clipboard
if (!navigator.clipboard) {
// Clipboard API not available
return
}
try {
const text = await navigator.clipboard.readText()
// copies info from clipboard to text variable
} catch (err) {
console.error('Failed to copy!', err)
}
Let's say you have built a PWA where people upload photos or share links and allowing users to see your app while clicking on the share button makes your PWA look dope.

Add this in your mainfest.json file. If you don't know about manifest json file or PWA's in general .Check out my article on Converting your website into PWA
Manifest.json
"share_target": {
"action": "/share-target/",
"method": "GET",
"params": {
"text": "link",
}
}
Now on the app side, you can get the data that the user has shared through a query parameter called link
The above code works only for links or text but what if you have to share images or files?
To implement for images/files checkout an article at web.dev here
Let's say you want a user to upload a file and the below code works for reading the file
<input type="file">
and you can save the file using download inside an anchor tag
<a href="" download="file.txt > Save File </a>
But you can't just edit the file which you have accessed from the above method. With File Share API you can edit the files you have read and save them which sends a new prompt to the user.
Do note that this is a new feature and only chrome 86 or greater supports this.
index.html
<button id="fs-open"> Upload File </button>
index.js
const getFile = document.getElementById('fs-open')
getFile.onClick = async() =>{
[fileHandle] = await window.showOpenFilePicker();
if (fileHandle.type === 'file') {
const fileData = await fileHandle.getFile();
}
else if(fileHandle.type==='directory'){
const dirName = 'directoryToGetName';
// assuming we have a directory handle: 'currentDirHandle'
const subDir = currentDirHandle.getDirectoryHandle(dirName, {create: true});
}
};
To save a file to disk, you can either use that filehandle that you got earlier or call showSaveFilePicker() to get a new filehandle.
async function saveFile(fileHandle) {
if (!fileHandle) {
fileHandle = await window.showSaveFilePicker();
}
const writable = await fileHandle.createWritable();
await writable.write(contents);
await writable.close();
}
You can even get directories and create files in the directories.
This is especially useful if you want to create Notepad Applications on the web. Read more about it here .
Local Storage is great for storing information that shouldn't be sent to the server, it also doesn't have any expiration, and also it has more storage capacity on the other hand session storage can be used for a session and for a fixed amount of time.
Here is how to store let's say a username
localStorage.username= 'hrithwik'
now let's say you have to retrieve the username of the username without a further API call
let username = localStorage.username
Remember I told you that there is no expiration for this?
localStorage.removeItem('username')
Let's say you are building the next zoom or an AR app. How do you access the camera ?
That can be done using navigator api
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
})
// get's both audio and video from the user
This returns a promise and can be stored in a variable. Let's Display the stream on the browser now
<button id="video-on">Get access to camera</button> <video autoplay></video>
document
.querySelector('#video-on')
.addEventListener('click', async function init(e) {
try {
const stream = await navigator.mediaDevices.getUserMedia({
video: true
audio:true
})
document.querySelector('video').srcObject = stream
document.querySelector('#video-on').setAttribute('hidden', true)
setTimeout(() => {
track.stop()
}, 3 * 1000)
} catch (error) {
alert(`${error.name}`)
console.error(error)
}
})
This hides the button after clicked and shows the video on the browser.
What if you are building an app that requires constant GPS Information from the users' device.
That's where GeoLocation API comes in. It gives you not only information regarding the longitude and latitude of users but also access to other various sensors which can be workaround with more use cases.
if(!navigator.geolocation) {
status.textContent = 'Geolocation is not supported by your browser';
} else {
status.textContent = 'Locatingβ¦';
navigator.geolocation.getCurrentPosition(success, error);
}
function sucess(position){
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
mapLink = `https://www.openstreetmap.org/#map=18/${latitude}/${longitude}`;
}
function error(){
status.textContent = 'Unable to retrieve your location';
}
You can even see if the device is in motion by adding a event listner.
window.addEventListner('devicemotion',(event) =>{
console.log(event)
}
If you want to discover more Web API's Here is a list of all Web API's
If you are on Hashnode and seeing this. Consider following my blog :)
Also, I love Filter Coffee