Introduction to node-fetch
Node-fetch is a lightweight module that enables developers to make HTTP requests from Node.js applications. It is one of the most popular choices for fetching data from external APIs thanks to its simplicity and promise-based interface.
Basic Usage
To get started with node-fetch, you’ll first need to install it using npm:
npm install node-fetch
Once installed, you can import and use it in your application:
const fetch = require('node-fetch');
fetch('https://api.github.com/users/github')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Advanced Usage
Fetching with POST Request
You can also use node-fetch for sending POST requests:
fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
body: JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1,
}),
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Handling Headers
Sometimes, you need to set custom headers for your requests:
fetch('https://api.github.com/users/github', {
headers: { 'User-Agent': 'node-fetch' },
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Streaming Responses
Node-fetch supports streaming responses which is useful for handling large datasets.
fetch('https://api.github.com/users/github')
.then(response => {
const dest = fs.createWriteStream('./github_user.json');
response.body.pipe(dest);
})
.catch(error => console.error('Error:', error));
Complete App Example
Below is a complete example of a Node.js application utilizing node-fetch to interact with an external API:
const fetch = require('node-fetch');
const express = require('express');
const app = express();
app.get('/user', (req, res) => {
fetch('https://api.github.com/users/github')
.then(response => response.json())
.then(data => res.send(data))
.catch(error => res.status(500).send('Error:', error));
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Conclusion
Node-fetch is a powerful tool for making HTTP requests in Node.js applications. With its promise-based interface and rich set of features, it’s a go-to choice for interacting with web APIs. The above examples demonstrate the basic and advanced functionalities that can help you build efficient and effective Node.js applications.
Hash: e497f5a5a076bdf3b2381a3bc11c5204339aac1f5819fb557800d3c0ad4ab14f