42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
const express = require('express');
|
|
const morgan = require('morgan');
|
|
const { createProxyMiddleware } = require('http-proxy-middleware');
|
|
|
|
const app = express();
|
|
|
|
// Configuration
|
|
const PORT = process.env.PORT || 3001;
|
|
const API_SERVICE_URL = process.env.VITE_API_PROXY_TARGET;
|
|
const API_KEY = process.env.VITE_API_KEY;
|
|
|
|
if (!API_SERVICE_URL) {
|
|
throw new Error('VITE_API_PROXY_TARGET environment variable is not set.');
|
|
}
|
|
if (!API_KEY) {
|
|
throw new Error('VITE_API_KEY environment variable is not set.');
|
|
}
|
|
|
|
// Logging
|
|
app.use(morgan('dev'));
|
|
|
|
// Proxy middleware
|
|
app.use('/api', createProxyMiddleware({
|
|
target: API_SERVICE_URL,
|
|
changeOrigin: true,
|
|
pathRewrite: {
|
|
'^/api': '', // remove /api prefix when forwarding to the target
|
|
},
|
|
onProxyReq: (proxyReq, req, res) => {
|
|
// Add the API key to the request header
|
|
proxyReq.setHeader('X-API-KEY', API_KEY);
|
|
},
|
|
onError: (err, req, res) => {
|
|
console.error('Proxy error:', err);
|
|
res.status(500).send('Proxy error');
|
|
}
|
|
}));
|
|
|
|
app.listen(PORT, () => {
|
|
console.log(`BFF server listening on port ${PORT}`);
|
|
});
|