Skip to content

Instantly share code, notes, and snippets.

@kaypee90
Created March 8, 2024 16:38
Show Gist options
  • Save kaypee90/b4cdd2af75c46c3d90e6b43a262aa805 to your computer and use it in GitHub Desktop.
Save kaypee90/b4cdd2af75c46c3d90e6b43a262aa805 to your computer and use it in GitHub Desktop.
Node.Js Async Middelware
// server.js
//
const responseTime = require('response-time');
const express = require('express')
const app = express()
app.use(responseTime())
const backgroundAxiosMiddleware = async (req, res, next) => {
const startTime = Date.now();
next()
res.once('finish', () => {
const endTime = Date.now();
const responseTime = endTime - startTime;
try {
// Express request.
console.log('Request BaseUrl:', req.baseUrl);
console.log('Request OriginalUrl:', req.originalUrl);
console.log('Request Method:', req.method);
console.log('Request Hostname:', req.hostname);
console.log('Request. IP:', req.ip);
console.log('Request. User Agent:', req.get('User-Agent'));
// Express response.
console.log('Response Status Code:', res.statusCode);
console.log('Response Status Message:', res.statusMessage);
console.log(`Response time: ${responseTime}ms`);
// Create an Axios instance
const axios = require('axios');
// Asynchronously make a GET request using Axios in the background
const responsePromise = axios.get('https://jsonplaceholder.typicode.com/posts');
// Handle the response when it resolves
responsePromise.then(response => {
// Process the response as needed
console.log('Axios endpoint called successfully')
}).catch(error => {
// Handle errors
console.error('Background Axios error:', error);
});
} catch (error) {
// Pass any errors to the Express error handling middleware
next(error);
}
})
};
const anotherOnFinishMiddleware = (req, res, next) =>{
next()
res.once('finish', () => {
console.log("Another Once Finish Call")
})
}
app.use(anotherOnFinishMiddleware);
app.use(backgroundAxiosMiddleware);
app.get('/', (req, res) => {
console.log("GET localhost:3000/");
res.json({ message: 'Hello, JSON!' });
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server at http://localhost:${PORT}`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment