遇到优秀的后台同事有时是一种可遇而不可求的事件,为了解决后台无法访问的问题,干脆自己使用Node.js写了个后台
大概的思路如下:
- 使用轻量级的Express框架
- 将路由层简单的分离出来
- Java后台正常时,将返回的数据保存为JSON格式,作为Express框架的数据源
chrome浏览器->F12->network,选择某个请求(可能需要刷新页面),在右侧窗格中,在Response页签中,全选并复制,并粘贴至JSON文件中即可。
少废话,直接上代码
第一步,在Express框架的主文件app.js中写入 跨域 设置
app.all("*", function (req, res, next) {
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin", "*");
//允许的header类型
res.header("Access-Control-Allow-Headers", "content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options')
res.send(200); //让options尝试请求快速结束
else
next();
})
第二步, 路由映射
const testRouter= require(path.join(__dirname, "routers/myRouter"));
app.use("/a/b", testRouter);
第三步 ,路由层逻辑处理
const express = require('express')
const path = require('path')
const fs = require('fs')
// 创建路由对象
const testRouter= express.Router()
// get请求
testRouter.get('/someAction/:id', (req, res) => {
console.log(req.params)
const detail = path.join(__dirname, "../public/JSON/data.json");
fs.readFile(detail, { encoding: 'UTF-8' }, (err, data) => {
if (err) {
console.error(err);
return;
};
data = data.toString();
res.writeHead(200,{
"Content-Type":"application/json;charset=UTF-8"
});
res.end(data)
})
})
// post请求
testRouter.post('/someAction/getGroupList', (req, res) => {
const getGroupList = path.join(__dirname, "../public/JSON/data1.json");
fs.readFile(getGroupList, { encoding: 'UTF-8' }, (err, data) => {
if (err) {
console.error(err);
return;
};
data = data.toString();
res.writeHead(200,{
"Content-Type":"application/json;charset=UTF-8"
});
res.end(data)
})
})
// 导出路由对象
module.exports = testRouter