Svelte is an open-source compiler that runs at build time and generates minimal and optimized JavaScript code. It competes with other JavaScript frameworks like React, Angular, Vue, and it is rapidly growing popular with JavaScript developers.
There are different ways you can request an API endpoint. You can use the fetch
API or third-party libraries. In the latter case, many HTTP packages are available on npm, and axios is the most popular one.
APIs are the backbone of any application, so let's see how we can call APIs in a Svelte application using Axios. I have divided the process into five steps which are as follows:
To use axios
for requesting APIs, you need to install it first in your project. Here is the command you would need to run for this in your terminal:
sh
npm install axios
Once it’s done, import axios
inside the <script>
tags of your Svelte file where you are interested in making API requests.
js
<script>import axios from 'axios';</script>
For this guide, we will use the Famous Quotes API from RapidAPI Hub, which gives us random quotes. RapidAPI Hub enables you to choose from thousands of public APIs like this for use in your projects.
Now, we will create the function which will make the API call. There are two ways in which you can trigger this function:
onMount
hook.onMount
hookIf we put our API call inside the onMount
hook of Svelte, the API request will be sent whenever the component mounts. This means that the API call will be made whenever the browser renders the component. You can use this approach to show data without requiring any input from the user, such as a page load.
To use onMount
, you need to import it into your Svelte file.
js
<script>import {onMount} from 'svelte';</script>jsNow, you can use an async function inside the hook to make the API call, like this:```js<script>import { onMount } from 'svelte';let footprint;js onMount(async () => {// Make the API Call here});</script>
The onMount
hook will send the API request whenever the component loads, but sometimes, we want to wait for some input from the user to make the request. For example, we may need the request to be sent when the user clicks a button.
In that case, we can use the event handlers like on:click
to trigger our caller function:
js
<script>import { onMount } from 'svelte';let footprintjsasync function getData() {// Make the API Call here}</script><div><button on:click={getData}>Get Data</button></div>
Finally, we will use Axios to specify the API request. If you want to make a GET request, you will use the get
method of axios
. If you’re going to make an Axios POST, PUT, or DELETE request, you will use the post
, put
, or delete
method of axios
. Take a look at the snippet below.
js
<script>const requestAPI = async () => {try {const res = await axios.get(`API_URL`, {headers: {},params: {},});} catch (err) {console.log(err);}};</script>
The first parameter of this method is the API endpoint URL, and the second is an object where you can send params and headers of your API request. The header is generally the area where you will add your API key.
Keeping this snippet in mind, let's add the API request to the Quotes API in our onMount
hook.
js
<scriptjsimport { onMount } from 'svelte';import axios from 'axios';let quotes = [];let error = null;onMount(async () => {try {const res = await axios.get(`https://famous-quotes4.p.rapidapi.com/random`, {headers: {'x-rapidapi-host': 'famous-quotes4.p.rapidapi.com','x-rapidapi-key': API_KEY,},params: { category: 'all', count: '10' },});quotes = res.data;} catch (e) {error = e;}});</script>
This is pretty much it. Now your application is ready to make API calls using axios
.