Use Express.js middleware to forward data to the Log visit endpoint.
In Express.js, middleware functions are functions that have access to the request object, response object, and the next middleware function in the application’s request-response cycle. Read the official documentation for more details.
Setup
- Set up the
HALL_API_KEY
environment variable with your Hall API key.
- Add the analytics middleware to your Express.js application before your route handlers.
Example
The example below demonstrates how to forward data from Express.js request objects.
const express = require('express')
const app = express()
function analyticsMiddleware(req, res, next) {
const requestPath = req.originalUrl || req.url
const requestMethod = req.method
const requestIp =
req.headers['x-forwarded-for']?.split(',')[0] ||
req.headers['x-real-ip'] ||
req.ip ||
req.connection?.remoteAddress ||
'127.0.0.1'
const requestHeaders = {
'User-Agent': req.headers['user-agent'],
'Host': req.headers['host'],
'Referer': req.headers['referer'],
}
fetch('https://analytics.usehall.com/visit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.HALL_API_KEY}`,
},
body: JSON.stringify({
request_path: requestPath,
request_method: requestMethod,
request_ip: requestIp,
request_headers: requestHeaders,
request_timestamp: Date.now()
}),
})
next()
}
app.use(analyticsMiddleware)