const path = require("path");
const jsonServer = require("json-server");
const router = require("./router");
const TokenService = require("./service/token");
const db = require("./db")();
const server = jsonServer.create();
const middlewares = jsonServer.defaults({
static: path.join(__dirname, "../public"),
});
server.use(middlewares);
// req.body
server.use(jsonServer.bodyParser);
// 鉴权
server.use((req, res, next) => {
if (TokenService.isAuthorized(req)) {
next();
} else {
res.sendStatus(401);
}
});
server.use((req, res, next) => {
const json = res.json.bind(res);
res.success = (data) => {
return json({
code: 0,
msg: "请求成功",
data,
});
};
res.fail = (msg, code = -1, data) => {
return json({
code,
msg,
data,
});
};
next();
});
//创建了一个新的函数 json,它与 res.json() 具有相同的功能,但是在调用时不需要提供上下文对象(即 this),
//因为它已经通过 bind 方法绑定到了 res 对象上。这样做的好处是,你可以将这个新函数 json 传递给其他函数或方法,而无需担心上下文对象的问题。
router(server);
const jsonRouter = jsonServer.router(db);
server.use((req, res, next) => {
setTimeout(next, 1000);
});
server.use("/api", jsonRouter);
server.listen(8555, () => {
console.log("JSON Server is running at 8000");
});
每次请求的时候都设置下静态资源的地址?
每次请求的时候都新增res.success方法和res.fail方法两个方法吗?
每次请求都会经过所有中间件吗?
如果是的话路由配置也是每次请求也是这样吗?
如果都是按照顺序执行,为什么listen可以放在最后?