方法一:
const http = require('http');
const fs = require('fs');
const server = http.createServer((req,res)=>{
res.setHeader('Content-Type','application/json');
const reqUrl = new URL(req.url,`http://${req.headers.host}`);
const urlPath = reqUrl.pathname
.split('/')
.map((path,index)=>{
(index <= 0 ? path : path.charAt(0).toUpperCase() + path.slice((1)))
})
.join('')
const filePath = `./mock/api${urlPath}.json`;
if(fs.existsSync(filePath)){
res.end(fs.readFileSync(filePath).toString('utf-8'))
}else {
res.end('{"tet":"0","msg":"未找到json文件"}')
}
})
server.listen(8888)
方法二:
const http = require('http');
const fs = require('fs');
const port = 8080;
const mockDir = "/mock";
const server = http.createServer();
const response = (handler)=>{
return (req,res)=>{
try{
handler(req,res)
}catch(error){
console.log(error);
res.statusCode = 500;
res.end({
code:500,
msg:"Server error"
})
}
}
}
const body = (handler)=>{
return (req,res)=>{
let body = '';
req.on('data',(chunk)=>{
body += chunk;
})
req.on('end',()=>{
handler({...req,body},res)
})
}
}
server.addListener(
"request",
body(
response((req,res)=>{
const path = req.url;
res.setHeader("Content-Type","applicaton/json");
res.charset = "utf-8";
const fileName = path
.split('/')
.slice(1)
.map((unit)=>`${unit[0].toUpperCase()}${unit.slice(1)}`)
.join('');
const json = fs.readFileSync(`${__dirname}${mockDir}/${fileName}`);
res.end(json)
})
)
)
server.listen(port,()=>{console.log(`Mock server running at ${port}`);
})
方法三:
方法四: