These days there are so many incredible web technologies in the market that you can use to build your applications. If you are a JavaScript developer, you can go with React.js, Vue.js, Next.js, Angular.js, Swelte, etc. With Python, you can go with Django, Flask, CherryPy, Bottle, etc.
You would have to make API calls to your server or some public REST API in each of these technologies. Learning to make these calls is essential.
In this piece, we will look at how to consume APIs in Vue.js. We will also briefly look at Vue.js as a web framework. So without any further ado, let’s jump in!
It is a modern JavaScript framework launched in 2014 to build web interfaces and single-page applications. It was created by Evan You to combine the pros of Angular into a lightweight and fast framework.
Vue.js is built on top of HTML, CSS, and JavaScript and provides a declarative and component-based programming model. The framework can also be used to build desktop applications using the Electron framework.
Let’s look at how you can make API calls in Vue.js. We will do this in a bunch of steps to make it easier to follow along.
Instead of looking up APIs on the Internet, let’s go to RapidAPI Hub and create an account if you haven’t already.
Once you have logged in, you will see thousands of APIs. I have already found a freemium Random Facts API that we can use.
To use this API, you need to subscribe to it first. You can do this by clicking on Subscribe to Test button.
Once you click the button, you will be redirected to another page where different available subscription packages will be shown. Let’s go with the free one for now.
After all this, you will be redirected back to the original page. Here you will have a key x-rapidapi-key
. Save it somewhere. It will be used later in the application.
We need to create a Vue.js boilerplate. For this, you can use the official Vue.js CLI to scaffold a project. For this, run the following command inside the terminal:
sh
npx @vue/cli create test-project
It will create a Vue.js project in your current working directory with project name test-project
. You can change it to whatever you like.
Once you are done, open this project in your preferred code editor.
In this step, we need to run the project. You can do this by first opening a terminal instance inside your project directory and then running the following command:
sh
npm run serve
It will start a local server at port 8080.
Go to src/components
directory and open the HelloWorld.vue
file. Remove all the HTML under the H1
tag and create a button using the button
tag. Once done, set an onclick
event on the button.
The onclick
event handler will call a function when the user clicks this button. We will make our API call inside this function.
vue
<template><div class="hello"><h1>{{ msg }}</h1><button @click="fetchData">Click Me!</button></div></template><script>export default {name: 'HelloWorld',props: {msg: String}};</script><!-- Add "scoped" attribute to limit CSS to this component only --><style scoped>button {padding: 20px 60px;font-size: 18px;}</style>
I have also added some styles to the button to make it slightly bigger.
Now create a methods
object inside the export default
object. This object will contain the methods that your application will use. Since we need to create a fetchData
method to make an API call, we will create it inside this object.
On the Random Facts API page, you will find code snippets of how you can use this API with different languages. Since we are using JavaScript, let’s choose the (JavaScript) fetch
from the dropdown.
Copy the code snippet and paste it inside the fetchData
function.
We would also need to convert the response to JSON and log it in the console. We can do it inside the then()
.
vue
<template><div class="hello"><h1>{{ msg }}</h1><button @click="fetchData">Click Me!</button></div></template><script>export default {name: 'HelloWorld',props: {msg: String},methods: {fetchData() {fetch('https://random-facts2.p.rapidapi.com/getfact', {method: 'GET',headers: {'x-rapidapi-host': 'random-facts2.p.rapidapi.com','x-rapidapi-key': 'Your -RapidAPI-Hub-Key'}}).then(response => {response.json().then(res => console.log(res));}).catch(err => {console.error(err);});}}};</script><!-- Add "scoped" attribute to limit CSS to this component only --><style scoped>button {padding: 20px 60px;font-size: 18px;}</style>
Replace the value of the x-rapidapi-key
in the above code snippet with the API key you saved earlier. Once you are done, go to this URL. Make sure your server is running. Now click on the Click Me!
button. It will call the fetchData
function and make the API call. Open the console by inspecting the page, and you will see the API response has logged inside the console.
This guide was an introduction to consuming APIs in Vue.js. We hope that now you can start using APIs in your awesome Vue.js projects.