-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
62 lines (55 loc) · 1.8 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// server.js
const { createServer } = require('http');
const { parse } = require('url');
const next = require('next');
const fs = require('fs');
const path = require('path');
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
function readJsonFile(filePath) {
try {
const fileContents = fs.readFileSync(filePath, 'utf-8');
return JSON.parse(fileContents);
} catch (error) {
console.error('Error reading JSON file:', error);
return null;
}
}
// Define a mapping of JSON endpoints to file paths
const jsonEndpoints = {
'/data/workExperience.json': path.join(
__dirname,
'data',
'workExperience.json'
),
'/data/portfolio.json': path.join(__dirname, 'data', 'portfolio.json'),
// Add more JSON endpoints as needed
};
app.prepare().then(() => {
createServer((req, res) => {
const parsedUrl = parse(req.url, true);
const { pathname, query } = parsedUrl;
// Check if the requested URL is a known JSON endpoint
if (jsonEndpoints[pathname]) {
// Set the Content-Type header to application/json
res.setHeader('Content-Type', 'application/json');
// Read and send the JSON data for the requested endpoint
const jsonFilePath = jsonEndpoints[pathname];
const jsonData = readJsonFile(jsonFilePath);
if (jsonData) {
// Send the JSON data
res.end(JSON.stringify(jsonData));
} else {
// Respond with an error if the JSON data couldn't be read
res.writeHead(500, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Failed to read JSON data' }));
}
} else {
handle(req, res, parsedUrl);
}
}).listen(3000, (err) => {
if (err) throw err;
console.log('> Ready on http://localhost:3000');
});
});